我有一个表Categories
,其中列Id, ParentId
(对于“子类别”,可以有任何级别的嵌套)和其他一些。使用SQL Server 2012我无法在同一个表FK_Categories_Categories
(Id -> ParentId
)中创建外键。
错误讯息是
'类别'表格 - 无法创建关系'FK_Categories_Categories'。 ALTER TABLE语句与FOREIGN KEY SAME TABLE约束“FK_Categories_Categories”冲突。冲突发生在数据库“pokupaykadb”,表“dbo.Categories”,列'Id'。
需要级联删除子类别。什么解决方案可以?最好是某个属性,例如通过外键从另一个表中删除级联
答案 0 :(得分:4)
如果存在不符合约束条件的孤立记录 - 在创建外键之前删除它们。
通常,很少有记录不符合新约束,并且DBMS不允许创建约束。
答案 1 :(得分:0)
在孤立值的情况下,第一次出现在错误标签中,并带有孤立的值。
这肯定有助于查看您尝试执行的代码。 以下是有效的表定义:
CREATE TABLE dbo.Categories
(
Id int NOT NULL IDENTITY(-2147483648, 1)
CONSTRAINT PK_Categories PRIMARY KEY
, ParentId int NOT NULL
CONSTRAINT FK_Categories_ParentId
FOREIGN KEY (ParentId) REFERENCES dbo.Categories
)