关于视图的外键参考

Nic*_*ico 1 t-sql sql-server-2008

是否有可能参考视野以确保完整性?

伪代码示例:

CREATE VIEW V_ONE AS SELECT .....
CREATE TABLE TWO ( ID INT REFERENCES V_ONE ( field ))
Run Code Online (Sandbox Code Playgroud)

想要CREATE TABLE T_ONE的,而不是V_ONE首先要能够引用T_ONE.

@编辑:

View V_ONE从erp系统的多个表中收集数据并对其进行预处理.表TWO扩展V_ONE了一些其他数据,不应包括在内V_ONE.表TWO中的每个条目都不能有条目V_ONE,但我想确保表TWO中没有可以找到基本数据的条目V_ONE.

Rap*_*aus 5

简答:不.Sql Server不允许在视图上使用外键.

您可以将外键约束放在视图中引用的"其中一个表"上,但没有上下文......很难给出方便的答案.

编辑:那么,对于两个检查约束怎么样,对v_one进行查询?

但是你必须找到一种方法来管理v_one的"源表"上的删除(和更新).

您可以在视图(V_ONE)上使用(未经测试)INSTEAD OF DELETE(以及INSTEAD OF UPDATE,如果需要)触发器,并使用表格上的检查约束(TWO).