mysql 多表級聯刪除

2021-06-18 03:52:36 字數 1440 閱讀 8431

備忘一下:

例如存在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的所有元組也刪除。

由於我原來建錶用的工具建的,不規範命名,導致後面我想修改一為delete cascade時,不能加index索引了,弄的又很麻煩,所以我用的方法是把index和外來鍵都刪除,然後重新用alter語句新增。

詳細了解還是看mysql文件內的說明。

下面是語句:

測試一:

#drop index rootid on subtb;

#alter table subtb add index rootid int (rootid);

#alter table subtb drop index rootid;

#alter table subtb add constraint foreign key (rootid) references roottb(id) on delete cascade;

#delete from roottb where id = '1';

測試二:

#alter table operation drop foreign key fk_reference_con;

#alter table operation drop index fk_reference_con;

#alter table operation add constraint foreign key contentid (contentid) references pagecontent(contentid) on delete cascade ;

#alter table pagecontent drop foreign key fk_reference_sub;

#alter table pagecontent drop index fk_reference_sub;

#alter table pagecontent add constraint foreign key subpageid (subpageid) references subpage(subpageid) on delete cascade ;

#alter table pagestaytime drop foreign key fk_reference_8 ;

#alter table pagestaytime drop index fk_reference_8;

#alter table pagestaytime add constraint foreign key subpageid (subpageid) references subpage(subpageid) on delete cascade ;

Oracle 多表級聯刪除方法

建立資料庫時為了防止其他人不小心刪除操作錯誤,所有的外來鍵都沒有加級聯刪除。哪知,不知什麼時候自己入了一批錯誤的資料進去,入庫使用的是軟體自動的,一下點錯給自己帶來無盡麻煩啊,刪除就不好辦了。表間的關係比較複雜,資料量又比較多,乙個個刪絕對會出大問題。於是實驗了幾種解決的辦法,現小結一下。方法一 建...

mysql級聯刪除

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

mysql多表刪除 MySQL中多表刪除方法

如果您是才接觸mysql資料庫的新人,那麼mysql中多表刪除是您一定需要掌握的,下面就將為詳細介紹mysql中多表刪除的方法,供您參考,希望對你學習掌握mysql中多表刪除能有所幫助。1 從mysql資料表t1中把那些id值在資料表t2裡有匹配的記錄全刪除掉 delete t1 from t1,t...