【发布时间】:2010-09-16 15:43:01
【问题描述】:
我在 SQL Server 2008 数据库中有以下表:
tblItem,有一个ItemID字段;
tblGoodItem,也有ItemID字段,外键指向tblItem;
tblBadItem,也有一个ItemID字段,还有一个外键指向tblItem。
一件物品不能既是好物又是坏物;它必须是一个或另一个。但是,无论物品的好坏,它都必须是一个物品。
我的问题是:如何向 tblGoodItem 和 tblBadItem 中的 ItemID 字段添加约束,以使两个表中都不能存在 ItemID 值?
我在 Stack Overflow 上阅读了一些关于类似问题的回复,我正在考虑这个解决方案:
创建一个视图 vwItem,它将 tblGoodItem on tblBadItem on ItemID 连接起来。
编写一个 UDF fnItem,它对 vwItem 进行查询以查看视图中存在多少条记录。
有一个调用 fnItem 并验证返回值是否为 0 的约束。
这是最好的主意吗?有人有更好的主意吗?
【问题讨论】:
标签: sql sql-server tsql sql-server-2008 check-constraints