簡體   English   中英

外鍵級聯刪除

[英]Foreign Key Cascade On Delete

假設我有以下表格

User,Article,Comment

User可以Comment Article或撰寫Article

我想要的行為是:

  • 當我刪除User ,應刪除其所有ArticlesComments
  • 當我刪除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 DELETEFOREIGEN 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM