Sql 无法创建FK约束

Sql 无法创建FK约束,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有两张桌子: TableA ------ TableAID INT IDENTITY Primary Key TableBID INT NULL I add a unique constraint on TableBID ALTER TABLE TableAID ADD CONSTRAINT xx UNIQUE ([TableBID]) TableB ------ TableBID INT IDENTITY Primary Key 现在,当我删除TableA行时,我需要同时删除Table

我有两张桌子:

TableA
------
TableAID INT IDENTITY Primary Key
TableBID INT NULL

I add a unique constraint on TableBID
ALTER TABLE TableAID ADD CONSTRAINT xx UNIQUE ([TableBID])

TableB
------
TableBID INT IDENTITY Primary Key
现在,当我删除TableA行时,我需要同时删除TableB,所以我尝试添加一个带有级联删除的FK

ALTER TABLE TableB ADD CONSTRAINT yy FOREIGN KEY (TableBID) 
REFERENCES TableA (TABLEBID) ON DELETE CASCADE
但我得到了这个错误:

Msg 1788, Level 16, State 0, Line 1
Cascading foreign key 'yy' cannot be created where the referencing column 'TableB.TableBID' is an identity column.

TableB.TableBID不能同时是标识列(独立计算),同时也是另一个表中某列的外键

我认为你们的关系颠倒了,实际上想要:

ALTER TABLE TableA ADD CONSTRAINT yy FOREIGN KEY (TableBID) 
REFERENCES TableB (TABLEBID) ON DELETE CASCADE
现在,当我删除TableA行时,我需要同时删除TableB,所以我尝试添加一个带有级联删除的FK

ALTER TABLE TableB ADD CONSTRAINT yy FOREIGN KEY (TableBID) 
REFERENCES TableA (TABLEBID) ON DELETE CASCADE
此场景要求您以另一种方式创建关系。 否则,在a中创建一个触发器,该触发器将在删除a时删除B中的匹配记录


当我切换表时,错误消失了,但我不应该在TableB上添加约束,因为我希望在删除TableA行时删除TableB行


FK表示主记录是B,并且A中的一个或多个记录链接到它(在您的情况下,您已使用唯一键将其限制为一对一)。级联删除在删除主文件时删除FK的子部分,因此删除B->删除匹配的A,而不是相反。您需要一个触发器。

我删除了表设计下的标识规范。

当我切换表时,错误消失了,但我不应该在TableB上添加约束,因为我希望在删除TableA行时删除TableB行。听起来您可能想逆转一切。TableB应该有一列引用TableA的PK作为外键。