我有一个问题在脑海中流传很多,我想在数据库(DBMS和建模MPD)领域找到一个可以解锁我的回复。
是否可以在两个(或更多)表之间找到循环关系
如:
Create Table TA ( TA_ID INTEGER not null, A SMALLINT, AA NUMERIC(5,0),TB_ID INTEGER, constraint PK_TA primary key (TA_ID) );
Create Table TB (TB_ID INTEGER not null, B SMALLINT, BB FLOAT, TA_ID INTEGER, constraint PK_TB primary key (TB_ID) );
alter TABLE TB add constraint Fk_TB_TA foreign key (TA_ID) references TA (TA_ID);
alter TABLE TA add constraint Fk_TA_TB foreign key (TB_ID) references TB (TB_ID);
答案 0 :(得分:0)
如果您正在寻找一组通过FK互相引用的表格,那么您可以尝试使用此代码。
SELECT *
FROM
sys.foreign_keys fk
WHERE
EXISTS
(SELECT * FROM sys.foreign_keys fk2 WHERE fk2.referenced_object_id = fk.parent_object_id AND fk2.parent_object_id = fk.referenced_object_id)
答案 1 :(得分:0)
好的,有可能吗?两者都有NOT NULL约束 - NO。如果你允许NULLS合一,那么是。
这是一个好主意,我无法想出你为什么这样做的原因,但有时候现实世界中的问题很复杂,我通常不会说永远不会。
快速搜索提出这个问题,表明这是在现实世界中发生的,请查看:How to do an INSERT into tables with circular relationships (SQL SERVER)