作为题目,有没有办法做到这一点?
例如:
DrivingLicence
---------------
CanDriveCar (bool)
CanDriveMotorbike (bool)
CanDriveBus (bool)
你不能在没有汽车牌照的情况下驾驶公共汽车,所以我希望DB抛出一个例外,如果有人试图给没有汽车牌照的人一个公共汽车牌照。
发布于 2010-09-15 11:01:20
ALTER TABLE dbo.DrivingLicence ADD CONSTRAINT
NameOfConstraint CHECK (CanDriveBus=0 OR CanDriveCar=1)
发布于 2010-09-15 11:18:06
Martin给了你一个可能的答案,但从你的帖子中并不清楚你的数据模型是什么:汽车牌照和公共汽车牌照是否具有相同的牌照号码?换句话说,如果我有一张汽车执照,并且学习驾驶公共汽车,我是得到第二个执照,还是只是在我现有的执照上盖上印章?
如果它们是单独的许可证,那么我假设它们在您的表中是单独的行,因为表的主键是--希望是!-- LicenceNumber。在这种情况下,检查约束将不起作用,因为它们只应用于一行中的值;在添加新的许可证时,您需要使用触发器来检查驱动程序已经拥有哪些许可证。
所以你的选择是:
你的帖子建议是1,但它有点不清楚。即使是这样,您也可以考虑另一个名为DrivingLicenceQualifications的表或其他表:如果一个许可证可以有多个限制条件,并且您希望在将来添加新的限制条件,那么这将更加灵活。
仅供参考,MSSQL中没有布尔数据类型,也许你的意思是位?
https://stackoverflow.com/questions/3716868
复制