Используйте два внешних ключа в таблице с «каскадом удаления» - PullRequest
0 голосов
/ 14 марта 2019
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 голосов
/ 19 марта 2019

Я немного поработал над этим, во внешних ссылках, на которые вы ссылались, ошибок нет.Возможно, у вас есть ссылка на идентификатор комментария в некоторых других таблицах.

это то, что я пробовал

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
0 голосов
/ 19 марта 2019

Если вы хотите удалить запись пользователя, вам нужно удалить записи в таблицах внешнего ключа.

В этом случае вам необходимо удалить записи в таблице Comments.

DELETE from dbo.Commnts
Where ID_User = "userid"

Затем вы можете удалить запись пользователя из Users таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...