[英]Foreign Key Cascade On Delete
假設我有以下表格
User,Article,Comment
User
可以Comment
Article
或撰寫Article
。
我想要的行為是:
User
,應刪除其所有Articles
和Comments
Article
,應刪除其所有Comments
所以我認為我應該使用外FOREIGN KEYS
並嘗試對上述內容進行建模,如下所示
CREATE TABLE [User](
UserId int PRIMARY KEY IDENTITY(1,1),
Username nvarchar(50) NOT NULL
)
CREATE TABLE [Article](
ArticleId int PRIMARY KEY IDENTITY(1,1),
UserId int NOT NULL,
FOREIGN KEY(UserId) references [User](UserId) ON DELETE CASCADE
)
CREATE TABLE [Comment](
CommentId int PRIMARY KEY IDENTITY(1,1),
UserId int Not NULL,
ArticleId int NOT NULL ,
FOREIGN KEY(UserId) references [User](UserId) ON DELETE CASCADE,
FOREIGN KEY(ArticleId) references [Article](ArticleId) ON DELETE CASCADE
)
但是問題出在Comment
引起
Introducing FOREIGN KEY constraint 'FK__Comment__Article__32E0915F' on table 'Comment' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
我的問題是,您將如何對這種行為進行建模並仍然使用CASCADE ON DELETE
和FOREIGEN KEYS
?
您應該只能夠刪除注釋的用戶外鍵上的級聯刪除。
與刪除用戶時一樣,這將級聯刪除文章,這將依次級聯刪除評論:
CREATE TABLE [Comment](
CommentId int PRIMARY KEY IDENTITY(1,1),
UserId int Not NULL,
ArticleId int NOT NULL ,
FOREIGN KEY(UserId) references [User](UserId),
FOREIGN KEY(ArticleId) references [Article](ArticleId) ON DELETE CASCADE
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.