主外鍵 設置 on update cascade 和on delete cascade 的區別

on update cascade 和on delete cascade 的區別html

這是數據庫外鍵定義的一個可選項,用來設置當主鍵表中的被參考列的數據發生變化時,外鍵表中響應字段的變換規則的。
update 則是主鍵表中被參考字段的值更新,delete是指在主鍵表中刪除一條記錄:
on update 和 on delete 後面能夠跟的詞語有四個
no action , set null , set default ,cascade
no action 表示 不作任何操做,
set null 表示在外鍵表中將相應字段設置爲null
set default 表示設置爲默認值
cascade 表示級聯操做,就是說,若是主鍵表中被參考字段更新,外鍵表中也更新,主鍵表中的記錄被刪除,外鍵表中改行也相應刪除。
級聯更新時,依據的是以前匹配的數據,在主表更新關聯的外鍵字段的值後,系統自動更新從表的相應外鍵字段的值,而不是其餘未設置爲主外鍵關聯的字段,不是主外鍵關聯的字段不受影響。數據庫

 

SQL級聯刪除——刪除主表同時刪除從表——同時刪除具備主外鍵關係的表

 

create table a
(
id  varchar(20) primary key,
password varchar(20) not null
)

create table b
(
id int identity(1,1)  primary key,
name varchar(50) not null,
userId varchar(20),
foreign key (userId) references a(id) on delete cascade
)
表B建立了外碼userId 對應A的主碼ID,聲明瞭級聯刪除
測試數據:
insert a values ('11','aaa')
insert a values('23','aaa')
insert b values('da','11')
insert b values('das','11')
insert b values('ww','23')
刪除A表內id爲‘11’的數據,發現B表內userId 爲「11」也被數據庫自動刪除了,這就是級聯刪除
delete a where id='11'ide

相關文章
相關標籤/搜索