備忘一下:
例如存在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...