在表中使用两个外键,并带有“在删除级联上”

时间:2019-03-13 22:00:26

标签: sql sql-server

CREATE TABLE Comments(
    Id INT PRIMARY KEY IDENTITY(0,1),
    TEXT NOT NULL,
    Date Date NOT NULL ,
    Point INT NOT NULL DEFAULT(0), 
    ID_User INT FOREIGN KEY REFERENCES Users(Id) ON DELETE CASCADE NOT NULL,
    ID_Post INT FOREIGN KEY REFERENCES Posts(Id)  NOT NULL
)

当我从“用户”表中删除用户时,它向我显示“评论”表具有的错误 其他参考密钥。我该怎么办?

  

DELETE语句与REFERENCE约束“ FK__Comments__ID_Pos__76969D2E”冲突。在数据库“ Facebook”的表“ dbo.Comments”的“ ID_Post”列中发生了冲突。

2 个答案:

答案 0 :(得分:0)

如果要删除用户记录,则需要删除外键表中的记录。

在这种情况下,您需要删除Comments表中的记录。

DELETE from dbo.Commnts
Where ID_User = "userid"

然后,您可以从Users表中删除用户记录

答案 1 :(得分:0)

我对此做了一些工作,您在这里引用的外键没有错误。您可能会在其他一些表中引用注释ID。

这就是我尝试过的

CREATE TABLE Users(
Id int primary key

)

CREATE TABLE posts(
Id int primary key
)

insert into Users values(1);
insert into Users values(2);

insert into posts values(3);
insert into posts values(4);


CREATE TABLE Comments(
    Id INT PRIMARY KEY IDENTITY(0,1),
    ID_User INT FOREIGN KEY REFERENCES Users(Id) ON DELETE CASCADE NOT NULL,
    ID_Post INT FOREIGN KEY REFERENCES Posts(Id)  NOT NULL
)

insert into Comments values(1,3);
insert into Comments values(2,4);

DELETE 
FROM Users
WHERE id = 1 --this works fine