mysql中的級聯刪除和級聯置空和級聯更新

2021-09-08 03:55:14 字數 3220 閱讀 6722

我就直接po**了,或者看我這篇**並茂版

#mysql中的級聯刪除和級聯置空

#create table nativeplace(

id int primary key auto_increment comment '編號',

province varchar(30) comment '省份',

city varchar(30) comment '市/區',

county varchar(30) comment '縣',

township varchar(30) comment '鄉/鎮',

address varchar(100) comment '家庭住址'

)comment = '籍貫表';

#select * from nativeplace;

#insert into nativeplace values

(null,'江西省', '贛州市', '于都縣', null, '渡江大道66666號'),

(null,'北京市', '海定區', 'a縣', null, '黃埔路8888號'),

(null,'湖南省', '長沙市', 'c縣', null, '南京路9999號'),

(null,'湖北省', '武漢市', 'd縣', null, '人民路5555號'),

(null,'江蘇省', '南京市', 'f縣', null, '長安路8686號');##

create table person(

id int primary key auto_increment comment '編號',

idcard varchar(20) unique not null comment '身份證號',

pname varchar(100) comment '姓名',

gender varchar(1) comment '性別',

birthday datetime comment '出生日期',

nation varchar(30) comment '民族',

nativeplaceid int comment '籍貫'

)comment = '戶口資訊表';

#select * from person;

#insert into person values

(null, '420102200808270010', '令狐沖', '男', '2008-08-27', '漢族', 4),

(null, '360731199803120010', '韋小寶', '男', '1998-03-12', '漢族', 1),

(null, '360731199605210010', '張無忌', '男', '1996-05-21', '漢族', 1),

(null, '420102199506080010', '楊過', '女', '1995-06-08', '漢族', 4),

(null, '320100199311120010', '段譽', '男', '1993-11-12', '漢族', 5),

(null, '430101199201250010', '喬峰', '女', '1992-01-25', '漢族', 3);

#desc person;

desc nativeplace;

show create table person;

show create table nativeplace;

show full columns from nativeplace;

show full columns from person;

##傳統的方式新增外來鍵

alter table person add constraint fk_person_nativeplace foreign

key(nativeplaceid) references nativeplace(id);

#理論上來說,我們應該是先刪除從表,再刪除主表,但是我們可以通過級聯刪除來強制刪除主表

#注意:級聯刪除和級聯置空是寫在從表,如下:

alter table person add constraint fk_person_nativeplace foreign

key(nativeplaceid) references nativeplace(id) on delete cascade;

#刪除外來鍵

alter table person drop foreign key fk_person_nativeplace;

#show index from person;

alter table person add constraint fk_person_nativeplace foreign

key(nativeplaceid) references nativeplace(id) on delete set null;

#刪除外來鍵

alter table person drop foreign key fk_person_nativeplace;

#級聯更新

alter table person add constraint fk_person_nativeplace foreign

key(nativeplaceid) references nativeplace(id) on update cascade;

#刪除外來鍵

alter table person drop foreign key fk_person_nativeplace;

#級聯更新置空

alter table person add constraint fk_person_nativeplace foreign

key(nativeplaceid) references nativeplace(id) on update set null;

#select * from person;

select * from nativeplace;

#刪除主表記錄

delete from nativeplace where id = 4;

#刪除主表記錄

delete from nativeplace where id = 1;

#更新主表中的主鍵

update nativeplace set id = 666 where id = 5;

#更新主表中的主鍵

update nativeplace set id = 888 where id = 666;

mysql級聯刪除

首先,目前在產品環境可用的mysql版本 指4.0.x和4.1.x 中,只有innodb引擎才允許使用外來鍵,所以,我們的資料表必須使用innodb引擎。但mysql 5版本以上不需指定innodb引擎。下面,我們先建立以下測試用資料庫表 create table roottb id int 11 ...

Oracle系列 級聯刪除和級聯更新

必須宣告 此部落格 於oracle外來鍵級聯刪除和級聯更新 鑑於此前收藏的精彩部落格無料被刪除了,很是痛心,所以還是要複製一下 一 級聯刪除 oracle在外鍵的刪除上有no action 類似restrict cascade和set null三種行為。下面以學生 班級為例說明不同情況下的外來鍵刪除...

mysql 多表級聯刪除

備忘一下 例如存在3個表,a,b,c.a,b是一對多關係 a id,name a b id,aid,name b b,c是一對多關係 b id,aid,name b c id,bid,name c 實現效果 刪除乙個a的id,與之關聯的b內aid的所有元組都刪除,b刪除就會把c關聯b的bid的所有元...