Установить несколько «первичных ключей» на один AccountID - PullRequest
0 голосов
/ 12 февраля 2020

Это похоже на простую проблему. Однако, я заблокирован.

У меня есть 6 идентификаторов продукта: 1001, 1002, 1003, 1004, 1005, 1006.

In таблица, у меня также есть список идентификаторов учетных записей. Каждый идентификатор учетной записи может иметь один из многих идентификаторов продукта (1-6), но не может иметь дубликатов.

Как добавить ограничение, чтобы разрешить использование нескольких идентификаторов учетных записей в таблице, которые могут содержать до 1-6 идентификаторов продуктов, но ни один из идентификаторов продуктов на одну учетную запись не может дублироваться?

Пример таблицы:

Хорошая таблица

Account_ID  ProductID
138777  100004
138777  100003
--------------
21252   100003
138778  100003
138779  100004
138780  100003
138781  100001
138782  100004

Неправильная таблица

Account_ID  ProductID
138777  100003
138777  100003
---------------
21252   100003
138778  100003
138779  100004
138780  100003
138781  100001
138782  100004

Какой самый логичный способ реализации этого ограничения?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы можете создать composite primary key в столбце Account_ID и ProductID.

. Вы можете узнать из этого сообщения SO Как определить составной первичный ключ в SQL?

Вы можете изменить таблицу, если она уже создана, чтобы добавить составной первичный ключ, как показано ниже.

ALTER TABLE < YourTableName > ADD CONSTRAINT [name of PK, e.g. PK_AccountProduct] PRIMARY KEY (
    Account_ID
    ,ProductID
    )

Это можно сделать в SQL Studio Management Server, открыв таблицу в режиме конструктора и выбор столбцов, щелкните правой кнопкой мыши и установите составной / первичный ключ.

В SSMS это выглядит так, как показано ниже:

enter image description here

...