2

我有一个 SQL Server 数据库,其中包含一个Apartment表(具有列FloorNumBuildingID)和一个ApartmentBuilding表(具有列NumFloors)。有没有办法设置一个约束(使用 SQL Server UI)来检查Apartment.FloorNum是否大于ApartmentBuilding.NumFloors

我试过这个:

FloorNum > ApartmentBuilding.NumFloors

但现在我意识到我必须以某种方式加入 上的列BuildingID,但我不知道如何在约束内做到这一点。

谢谢你的帮助!

4

2 回答 2

3

您不能使用 CHECK CONSTRAINT 执行此操作,因为它需要来自另一个表的数据。您可以使用INSERT/UPDATE 触发器来处理这个问题。

于 2010-05-05T20:10:27.910 回答
0
  1. 在 ApartmentBuilding 表中,添加 UNIQUE 约束 (BuildingID, NumFloors)
  2. 在 Apartment 表中,添加列 NumFloorsInBuilding
  3. 在 Apartment 表中,在 (BuildingID, NumFloorsInBuilding) 上添加引用 (BuildingID, NumFloors) 的外键。这保证了 NumFloorsInBuilding 始终等于父表中的 NumFloors。
  4. 在 Apartment 表中,添加 CHECK(FloorNum < NumFloorsInBuilding)
于 2010-05-05T20:54:47.447 回答