原地址: http://blog.sina.com.cn/s/blog_5e0ed6fd0100i1z2.html
?
??? 手動(dòng)刪除數(shù)據(jù)庫(kù)中冗余數(shù)據(jù)可能遇到外鍵關(guān)聯(lián)導(dǎo)致數(shù)據(jù)無法刪除的問題。這個(gè)問題的解決及思考記錄如下:
?
??? 如果在數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候設(shè)置了級(jí)聯(lián)刪除,那么本文提到的問題是不會(huì)發(fā)生的。如果不幸這樣的狀況發(fā)生了,那么可以根據(jù)它提示的關(guān)聯(lián)外鍵,到user_constraints表中按constraint_name查找到唯一的記錄,當(dāng)然查詢這個(gè)系統(tǒng)視圖的用戶權(quán)限應(yīng)該比較高,然后在記錄中找到table_name,最后編輯表的外鍵關(guān)聯(lián),將on delete觸發(fā)的動(dòng)作改為cascade。如果數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)表很多,關(guān)聯(lián)關(guān)系比較復(fù)雜,那么很可能在遇到問題之后要修改的外鍵關(guān)聯(lián)時(shí)的級(jí)聯(lián)刪除不止一個(gè)兩個(gè)。
??? 此外,說兩個(gè)題外話:
??? 第一,設(shè)置外鍵關(guān)聯(lián)的時(shí)候,級(jí)聯(lián)操作有三種設(shè)置方式:
??? 默認(rèn)無動(dòng)作:on delete no action;
??? 置空:on delete set null;
??? 級(jí)聯(lián)刪除:on delete cascade。
??? 第二,在drop表的時(shí)候,用drop table cascade constraints語句,只會(huì)刪除子表與父表之間的關(guān)聯(lián)關(guān)系,不會(huì)刪除子表中關(guān)聯(lián)父表的那些記錄。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
