串聯刪除(ON DELETE CASCADE的用法)

來源:互聯網
上載者:User

在SQL Server   2000中,增加了一個NO   ACTION/CASCADE的新約束,對於外鍵約束也進行了相應的修改。這樣,我們就可以通過相應的設定來修改被參考表中的資料,同時與之有外鍵關係的表也自動進行相應的改動。我們通過以下很簡單的例子說明這個問題。  
   
       我們建立兩個表a和b,a和b的欄位都一樣,都是一個主鍵id和另外的一個欄位,我們暫且定義為cnt。然後:    
   
       ALTER   TABLE   b   ADD   CONSTRAINT   FK_AAA   FOREIGN   KEY   (id)  
   
       REFERENCE   a(id)  
   
       這樣,a.id就成為b的外鍵了。通過兩個表的id相關聯。  
   
       然後我們進行插入操作:  
   
       insert   into   a   (id,   cnt)   values(1,'aaa'   )  
   
       insert   into   b   (id,   cnt)   values(1,'bbb'   )  
   
       然後我們這樣做:delete   a  
   
       我們會發現,系統報錯,因為b.id和a.id相關聯,b.id要參照a.id。把a中的記錄刪除,b就失去了參照項,這樣,外鍵約束起作用了,顯示錯誤資訊。但是如果,我們外鍵這樣定義:  
   
       ALTER   TABLE   b   ADD   CONSTRAINT   FK_AAA   FOREIGN   KEY   (id)  
   
       REFERENCE   a(id)  
   
       ON   DELETE   CASCADE  
   
       我們重複上述操作,當刪去了a中的記錄之後,會發現b中的記錄也被刪除了。如果我們的外鍵這樣定義:  
   
       ALTER   TABLE   b   ADD   CONSTRAINT   FK_AAA   FOREIGN   KEY   (id)  
   
       REFERENCE   a(id)  
   
       ON   DELETE   NO   ACTION  
   
       我們會發現系統依然報錯。  
   
       通過這個例子我相信大家都可以看明白NO   ACTION/CASCADE的用法了

 

 

===================================================

 

 

CREATE TABLE Countries(CountryId INT PRIMARY KEY)
INSERT INTO Countries (CountryId) VALUES (1)
INSERT INTO Countries (CountryId) VALUES (2)
INSERT INTO Countries (CountryId) VALUES (3)
GO
CREATE TABLE Cities( CityId INT PRIMARY KEY  ,CountryId INT REFERENCES Countries ON DELETE CASCADE);
INSERT INTO Cities VALUES(1,1)
INSERT INTO Cities VALUES(2,1)
INSERT INTO Cities VALUES(3,2)
GO
CREATE TABLE Buyers(CustomerId INT PRIMARY KEY ,CityId INT REFERENCES Cities ON DELETE CASCADE);
INSERT INTO Buyers  VALUES(1,1),
INSERT INTO Buyers  VALUES(2,1)
INSERT INTO Buyers  VALUES(3,2)
GO

命令:
DELETE FROM Countries WHERE CountryId = 1
結果:
Countries:
CountryId
2
3
Cities:
CityId CountryId
3 2
Buyers:
CustomerId CityId

ON UPDATE CASCADE的用法和ON DELETE CASCADE差不多

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.