参考数据完整性
我正在参考sql中的参考数据完整性。参考数据完整性
我想创建一个场景,我有三个表名branch1
,branch2
和branch3
。 Branch2
和Branch3
与外键的branch1
表连接。
现在我想对branch1
表创建一个系统,如果我在branch1
表中插入“主动”的branch2
和branch3
表将能够在表中插入,当我在branch1
表中插入“无效”,另2个表将无法在表格中插入任何东西。
这一切都想用参照数据完整性来创建。
所以请帮助我,我都试过,但我没有成功
您可以使用触发器。
BRANCH2
和BRANCH3
上的触发器可用于检查BRANCH1
表中的ACTIVE
。如果存在,插入可以继续,否则插入可以取消。
请参阅MSDN Create Trigger doco的语法。
这里有一个教程,我发现过一个快速谷歌:An Intro to SQL Triggers @ SQL Team
如果您还需要控制参照完整性,触发器可用于这也太 - 如果父记录从一个表中删除,例如,该表上的触发器可以首先从其他表中删除子记录,以确保约束不会阻止删除。
但是,由于您的问题中没有描述真正的父母/子女关系,因此我无法看到参照完整性如何应用。
的表不将数据插入到其他表。查询确实如此。您始终可以在查询中添加'where'子句以使更新有条件。
是的确切,但我希望如果我创建这三个表我想创建在branch1表中的级联方法,如果我插入'主动'的查询在表branch1然后我插入到其他2表插入将不执行。 – Mufasil 2013-03-09 12:12:22
你所描述的与引用完整性无关(至少不是外键的实际工作方式)。这更多地描述了应用程序语义。 – Oded 2013-03-09 12:03:51
我正在谈论级联更新和删除,可以用这些级联更新和删除来做到这一点。 – Mufasil 2013-03-09 12:06:03
这个问题没有明确问到。以下声明意味着什么? '其他2个表格将无法在表格中插入任何东西.'表格不会插入到其他表格中。你的意思是,另外两张桌子变成只读吗? – Tim 2013-03-09 13:19:53