3

我有一个Categories带有列的表Id, ParentId(对于可以具有任何嵌套级别的“子类别”)和其他一些列。使用 SQL Server 2012 我不能在同一个表中创建外键,FK_Categories_CategoriesId -> ParentId)。

错误信息是

“类别”表
- 无法创建关系“FK_Categories_Categories”。ALTER TABLE 语句与 FOREIGN KEY SAME TABLE 约束“FK_Categories_Categories”冲突。冲突发生在数据库“pokupaykadb”、表“dbo.Categories”、“Id”列中。

这需要级联删除子类别。可以有什么解决办法?最好是某个属性,例如通过外键从另一个表中级联删除

http://i.stack.imgur.com/kXiMS.png

4

2 回答 2

4

如果存在不符合您的约束条件的孤立记录 - 在创建外键之前将其删除。

通常很少有记录不符合新约束,并且 DBMS 不允许创建约束。

于 2013-06-07T14:59:52.070 回答
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
)
于 2013-06-07T14:59:59.477 回答