Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Запретить дубликаты foreign key

$
0
0
Здравствуйте!

Подскажите пожалуйста как можно сделать, чтобы ключ их внешней таблицы Teacher не имел дублей в TeacherSchool. Проще говоря учитель может работать только в одной школе.

Пример:

Нужно так:
TeacherId SchoolId
1 1
5 4
8 7

Так нельзя:
TeacherId SchoolId
1 1
1 4
8 7


CREATE TABLE [dbo].[School](
    [Id] [int] IDENTITY(1,1) NOT NULL
CONSTRAINT [PK_dbo.School] PRIMARY KEY CLUSTERED
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


CREATE TABLE [dbo].[Teacher](
    [Id] [int] IDENTITY(1,1) NOT NULL
CONSTRAINT [PK_dbo.Teacher] PRIMARY KEY CLUSTERED
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


CREATE TABLE [dbo].[TeacherSchool](
    [TeacherId] [int] NOT NULL,
    [SchoolId] [int] NOT NULL
CONSTRAINT [PK_dbo.TeacherSchool] PRIMARY KEY CLUSTERED
(
    [TeacherId] ASC,
    [SchoolId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[TeacherSchool]  WITH CHECK ADD  CONSTRAINT [FK_dbo.TeacherSchool_dbo.Teacher_Id] FOREIGN KEY([TeacherId])
REFERENCES [dbo].[Teacher] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[TeacherSchool] CHECK CONSTRAINT [FK_dbo.TeacherSchool_dbo.Teacher_Id]
GO
ALTER TABLE [dbo].[TeacherSchool]  WITH CHECK ADD  CONSTRAINT [FK_dbo.TeacherSchool_dbo.School_Id] FOREIGN KEY([SchoolId])
REFERENCES [dbo].[School] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[TeacherSchool] CHECK CONSTRAINT [FK_dbo.TeacherSchool_dbo.School_Id]
GO

Viewing all articles
Browse latest Browse all 7251

Trending Articles