Проверка данных при вставке SQL - PullRequest
0 голосов
/ 12 марта 2012

У меня есть данные со следующими образцами данных:

ID  CID     Name            ImageLocation                           Order   
1   1   Suit Jacket Content/Berwin/Content/Images/SuitJacket.jpg    1
2   1   Trousers    Content/Berwin/Content/Images/Trousers.jpg      2
4   2   Jumper      Content/Berwin/Content/Images/Jumper.jpg        1
5   3   Trousers    Content/Berwin/Content/Images/Trousers.jpg      1
6   4   Suit Jacket Content/Berwin/Content/Images/SuitJacket.jpg    1

ID - это PK, CID - это FK, а ордер - это ордер, который должен отображаться в не ордере FK

Можно ли в любом случае обеспечить, чтобы число в столбце Order было уникальным в пределах его CID. То есть Я не смогу вставить 1 or 2, когда CID is 1?

Ответы [ 3 ]

3 голосов
/ 12 марта 2012

Да, это возможно.

Вы можете добавить новый «Уникальный ключ» в свою базу данных.

  • В SQL Server Management Studio перейдите в режим «Дизайн» своеготаблица.
  • Щелкните правой кнопкой мыши> Индексы / ключи ...
  • Добавьте новый индекс / ключ
  • Установите его тип как "Уникальный ключ"
  • Добавить столбцы CID и Order
  • Закрыть диалоговое окно и сохранить таблицу
2 голосов
/ 12 марта 2012

... или вы можете добавить уникальное ограничение для двух столбцов

ADD CONSTRAINT CID_Order_Const UNIQUE(CID, Order)
2 голосов
/ 12 марта 2012

Если у вас есть эти примерные данные в вашей таблице, и вы не хотите иметь возможность вставлять другую строку, где CID = 1 и order = 1 или 2, то вы можете сделать это, добавив уникальный индекс в эти столбцы.

CREATE UNIQUE NONCLUSTERED INDEX IX_CID_ORDER ON dbo.TABLE
    (
    CID,
    Order
    ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...