可以先禁用觸發(fā)器關(guān)閉它,不行的話就刪除,然后再刪除信息,最后在啟動(dòng)觸發(fā)器,如果觸發(fā)器不能刪除的話,kill用過(guò)沒(méi)有
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的景谷網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
刪除觸發(fā)器,DROP?TRIGGER?trigger_name;當(dāng)然你要有相關(guān)權(quán)限。
裝個(gè)pl/sql,更簡(jiǎn)單。
刪除表的時(shí)候“應(yīng)該”不會(huì)刪除響應(yīng)的觸發(fā)器的。為驗(yàn)證,你可以驗(yàn)證下,記得驗(yàn)證了告訴我哈。
驗(yàn)證方法:
刪除表后查詢相關(guān)觸發(fā)器:語(yǔ)句
SELECT?TRIGGER_NAME,?TRIGGER_TYPE,?TRIGGERING_EVENT,
TABLE_OWNER,?BASE_OBJECT_TYPE,?REFERENCING_NAMES,
STATUS,?ACTION_TYPE
FROM?all_triggers where TRIGGER_NAME=your_trigger_name;
如果你把他們建在了一個(gè)模式下,或者能確定什么時(shí)間以后創(chuàng)建的對(duì)象都不要了,那么就可以寫(xiě)一個(gè)腳本一口氣全刪除了
否則就很難了,不如重裝一下
觸發(fā)器是沒(méi)問(wèn)題的,檢查數(shù)據(jù)吧,把你表里的數(shù)據(jù),和執(zhí)行刪除的語(yǔ)句發(fā)上來(lái)才好,自測(cè)沒(méi)問(wèn)題。
create?table?student
(id?int,
class_id?int);
create?table?classes?
(id?int,
student_count?int);
insert?into?student?values?(1,1);
insert?into?student?values?(2,1);
insert?into?student?values?(3,1);
insert?into?student?values?(4,2);
insert?into?student?values?(5,2);
insert?into?student?values?(6,3);
insert?into?classes?values?(1,3);
insert?into?classes?values?(2,1);
insert?into?classes?values?(3,1);
commit;
執(zhí)行刪除后:
delete?from?student?where?id=3;
commit;
結(jié)果:
此種處理方式無(wú)法實(shí)現(xiàn)
1,經(jīng)測(cè)試在A觸發(fā)器中,滿足條件,寫(xiě)入B表,再刪除A,刪除的這個(gè)操作不能進(jìn)行。
2,換個(gè)思路,在A添加觸發(fā)器,滿足條件,寫(xiě)入B,在B表上也添加觸發(fā)器,滿足條件,刪除A,同樣無(wú)法進(jìn)行。
換個(gè)處理方式:
寫(xiě)入A,滿足條件,再寫(xiě)入B, 再刪除A, 那么寫(xiě)入A的時(shí)候就是個(gè)多余的動(dòng)作。
最好的處理方式,不符合條件的寫(xiě)入A,符合條件的直接寫(xiě)入B