Ограничения SQL Server в разных таблицах - PullRequest
2 голосов
/ 06 мая 2010

У меня есть база данных SQL Server с таблицей Apartment (в которой есть столбцы FloorNum и BuildingID) и таблицей ApartmentBuilding (со столбцом NumFloors). Есть ли способ установить ограничение (используя пользовательский интерфейс SQL Server), чтобы проверить, что Apartment.FloorNum больше ApartmentBuilding.NumFloors?

Я пробовал это:

FloorNum > ApartmentBuilding.NumFloors

но теперь я понимаю, что мне как-то нужно соединить столбцы в BuildingID, но я не знаю, как это сделать в рамках ограничения.

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 06 мая 2010

Вы не можете сделать это с CHECK CONSTRAINT, так как для этого требуются данные из другой таблицы. Вы бы справились с этим с помощью INSERT / UPDATE триггера .

0 голосов
/ 06 мая 2010
  1. В таблице ApartmentBuilding добавьте УНИКАЛЬНОЕ ограничение для (BuildingID, NumFloors)
  2. В таблице квартир добавьте столбец NumFloorsInBuilding
  3. В таблице квартир добавьте внешний ключ для (BuildingID, NumFloorsInBuilding), ссылаясь на (BuildingID, NumFloors). Это гарантирует, что NumFloorsInBuilding всегда равен NumFloors в родительской таблице.
  4. В таблице квартир добавить CHECK (FloorNum
...