sql - 无法创建 FK 约束

标签 sql sql-server sql-server-2008

我有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/

相关文章:

sql-server - 如何按周顺序显示记录

c# - sql server float格式全局化

sql-server - 如何使用 'inserted' 和 'deleted' 表中的 text、ntext 或 image 列

php 标签系统 - 如果标签已存在于表中

php - Cakephp 查询更新失败

mysql - 两个表的值相减并相乘

SQL MOVE记录到另一个表

SQL 计算日期范围内的连续天数

sql - 是否可以替换 SQL 查询中的值?

c# - 如何在 sql server 中加密数据并在 .net 应用程序中解密