trigger的觸發(fā)條件是insert or update,他跟字段名無關(guān),所以當(dāng)你2個(gè)一起執(zhí)行的時(shí)候,就會(huì)出現(xiàn)這樣的情況:update 表534的時(shí)候,觸發(fā)trigger:hjx_formtable534_inser
成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!
533也跟著update;接著觸發(fā)hjx_formtable533_update,這時(shí)又把534也update了。從此走上死循環(huán)的不歸路。。。。。。
其實(shí)可以這樣(我不知道你哪個(gè)table1,哪個(gè)table2)。table1的trigger設(shè)置為affer,那么另外一個(gè)trigger設(shè)置為before,這樣理論上應(yīng)該可以同時(shí)觸發(fā)2個(gè) trigger而不會(huì)存在循環(huán)問題,我才下班,還沒來得及試驗(yàn),不好意思
可以創(chuàng)建這樣一個(gè)觸發(fā)器,在這個(gè)時(shí)間段內(nèi)插入數(shù)據(jù)就報(bào)錯(cuò),數(shù)據(jù)插不進(jìn)去就可以了,代碼如下:
create
or
replace
trigger
aa_trigger2
before
insert
on
aa
referencing
new
as
n
old
as
o
for
each
row
when
(to_char(sysdate,'hh')
=
'22'
)
declare
begin
raise_application_error(-20009,
'該時(shí)間段內(nèi)禁止插入數(shù)據(jù)');
exception
when
others
then
raise_application_error(-20009,
'該時(shí)間段內(nèi)禁止插入數(shù)據(jù)');
end;
--禁用
alter table [tablename]
disable all trigger
--恢復(fù)
alter table [tablename]
enable all trigger
如果你想禁用數(shù)據(jù)庫(kù)中所有的觸發(fā)器,那你只能寫存儲(chǔ)過程實(shí)現(xiàn),找出所有的表,然后逐一禁用
--關(guān)閉某表上所有trriger
alter table table_name disable all triggers;
--開啟某表上所有trriger
alter table table_name enable all triggers
本人也是?學(xué)習(xí)者。認(rèn)為是??INSERT?or?UPDATE?錯(cuò)誤。因該是前或后出發(fā),然后分別建立兩個(gè)觸發(fā)器吧。分兩種情況。
這又?INSERT?又?UPDATE
導(dǎo)致:old.stattag:new.stattag?錯(cuò)誤。
和平時(shí)輸入一樣,用鍵盤輸入C語(yǔ)言中的邏輯或 ||,只需要同時(shí)按住鍵盤上的“Shift + \”即可。