我面临的情况是,我有两个表:A和B. B有一个外键到A.为了强制执行检查约束,在表中复制列是否是个好主意?
A有一个“Detailed”列,用于标识其B子项中是否需要其“细节“部分填写。
如果我有我的精益结构,我无法确定B中的记录是否需要填写其“详细信息”部分,即不为空,而不加入A.因此,唯一的方法是为我为了防止有人插入或更新这些记录到一个无效的状态是有一个触发器加入A并检查其“详细”列。
我的感觉是,约束优于触发器,因为除了过滤器外,它们更像数据的事实,而触发器只是过滤器。
我能得到这个通过复制B中的“详细”栏,然后有一个检查约束(详细=“Y”和细节IS NOT NULL)OR(详细=“N”)
思考解决这个问题的最好方法是?
如果您将列复制到表B中,将使其与表A同步吗?将它留在A中并使用触发器。 – 2010-02-05 16:43:32
如果我要走这条路线,我会强制从B到A的外键的同步性。 – 2010-02-05 16:47:00
与FK之间的二者,那么将不可能改变“详细”的值。 – 2010-02-05 18:12:46