我有一个SQL Server下表2008分贝:如何使用引用另一个表的检查约束?
tblItem,具有项目ID场;
tblGoodItem,它还有一个ItemID字段,并有一个指向tblItem的外键;
tblBadItem,它也有一个ItemID字段,并且还有一个指向tblItem的外键。
一件物品不能既是好物品又是坏物品;它必须是一个或另一个。但是,无论项目是好还是坏,它都必须是一个项目。
我的问题是这样的:如何向tblGoodItem和tblBadItem中的ItemID字段添加一个约束,以便两个表中都不能存在ItemID值?
我读过的堆栈溢出一些回答类似的问题,我想这个解决方案:
创建一个视图vwItem它连接tblGoodItem上tblBadItem上项目ID。
编写一个UDF fnItem它对vwItem进行查询以查看视图中存在多少记录。
有哪些要求fnItem并验证返回的值是0
这是最好的办法约束?有没有人有更好的主意?
你打败了我几秒钟。 – 2010-09-16 16:14:43
我很喜欢这个想法。无需担心从坏到好 - 事实上,我并不希望发生这样的变化。 – 2010-09-16 16:35:12