on update cascade 和on delete cascade 的區別
這是數據庫外鍵定義的一個可選項,用來設置當主鍵表中的被參考列的數據發生變化時,外鍵表中響應字段的變換規則的。
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'