У меня есть таблица с именем Followers, которая содержит один столбец PK и два столбца FK, в которых будут храниться целые числа таблицы с именем User. Однако я не хочу иметь реплицированные значения в столбцах - комбинация двух FK всегда должна быть разной. Как я могу это сделать?
Уникальное ограничение на два внешних ключа всегда должно быть другой комбинацией
comment
Возможный дубликат Добавить уникальное ограничение для комбинации двух столбцов
- person Michał Turczyn   schedule 07.05.2018
comment
Без DDL и четкого описания вашего требования возможны только предположения. Считаете ли вы, что набор значений (1, 2) отличается от (2, 1) - игнорируя столбец первичного ключа вашего идентификатора?
- person SMor   schedule 07.05.2018
Ответы (2)
Создайте один уникальный ключ для обоих столбцов
person
Aswani Madhavan
schedule
07.05.2018
Уникальный index или ограничение решит вашу проблему. Уникальные ограничения реализованы в виде уникальных индексов за кулисами, поэтому выбор любого решения тривиален.
Чтобы продемонстрировать, давайте предположим следующий надуманный сценарий.
create table User (
Id int identity primary key,
name varchar(255) not null
);
go
create table Follower (
Id int identity primary key,
UserId int foreign key references User(Id),
FollowerId int foreign key references User(Id)
);
go
Чтобы обеспечить уникальность UserId
и FollowerId
, добавьте следующий уникальный индекс.
create unique index ux_follower_userid_followerid
on Follower
(
UsrId
,FollowerId
);
go
Обратите внимание, что обычно рекомендуется также включать некластеризованные индексы в столбцы внешнего ключа для облегчения соединений.
person
pim
schedule
07.05.2018