Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对另一架构中表的外键引用_Sql_Oracle_Database Design - Fatal编程技术网

Sql 对另一架构中表的外键引用

Sql 对另一架构中表的外键引用,sql,oracle,database-design,Sql,Oracle,Database Design,我试图在我的一个表上创建一个外键,引用另一个模式中的表列 诸如此类: ALTER TABLE my_schema.my_table ADD ( CONSTRAINT my_fk FOREIGN KEY (my_id) REFERENCES other_schema.other_table(other_id) ) 由于我有必要的补助金,这一切都很顺利 现在我想知道是否有不引用不同模式中的表的原因,或者有什么需要注意的吗?这可能会导致问题的一个原因是您需要注意按正确的顺序删除内

我试图在我的一个表上创建一个外键,引用另一个模式中的表列

诸如此类:

ALTER TABLE my_schema.my_table ADD (
  CONSTRAINT my_fk
    FOREIGN KEY (my_id)
    REFERENCES other_schema.other_table(other_id)
)
由于我有必要的补助金,这一切都很顺利


现在我想知道是否有不引用不同模式中的表的原因,或者有什么需要注意的吗?

这可能会导致问题的一个原因是您需要注意按正确的顺序删除内容。这可能是好的,也可能是坏的,这取决于表中不存在孤立项的重要性。

这样做没问题。在表之间建立外键关系时,模式实际上没有影响。只需确保适当的人员具有您要使用的架构所需的权限。

这将完全像在其自己的架构中引用表的外键一样工作


与常规外键一样,如果父键被更新或从父表中删除条目,请不要忘记索引
my_id
(未索引的外键可能会导致大量争用,而且索引通常很有用).

我遇到的唯一一件事是确保另一个架构上存在权限。通常的东西-如果这些权限因任何原因消失,你会听到的。

如果你所在的组织中不同的人对不同的模式拥有权限,我认为最好让另一个模式能够禁用,甚至删除并重新创建你的约束


例如,他们可能需要删除或截断表,然后重新加载以处理一些(非常奇怪的)支持问题。除非你想在半夜被打电话,我建议给他们暂时解除你约束的能力。(我还建议您设置自己的警报,以便知道是否禁用或删除了任何外部约束)。当您跨越组织/模式界限时,您希望与其他人打好交道。文森特提到的索引是其中的另一部分

好吧,但在我的模式中引用表时也是如此。是吗?是的,是一样的。不过,这是需要小心的