我有2张 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 不能同时是一个 IDENTITY 列(独立计算),同时又是另一个表中某个列的外键。

我认为你已经扭转了你们的关系并且实际上想要:

ALTER TABLE TableA ADD CONSTRAINT yy FOREIGN KEY (TableBID)
REFERENCES TableB (TABLEBID) ON DELETE CASCADE

关于sql - 无法创建 FK 约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4696743/

10-11 05:03