CREATE OR REPLACE TRIGGER trg_cost
創(chuàng)新互聯(lián)長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為義安企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),義安網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
AFTER INSERT ON cost for each row
begin
update cost a
set a.oper_date =sysdate
where a.oper_date =:new.NEW.OPER_DATE
-- 其他條件
...;
END ;
希望能夠幫到你。謝謝!
create or replace trigger emergency
after
insert or update of p_time
on tableA
for each row
Begin
if p_code = '9999' then
update tableB set p_time = :new.p_time where id = :new.id
end if;
end;
提示已經(jīng)講得清楚: 表TEST.TB_CLEARING發(fā)生了變化, 觸發(fā)器/函數(shù)不能讀它.
在使用oracle行級(jí)(for earch row設(shè)定)觸發(fā)器時(shí)要注意:
1.觸發(fā)器不可以執(zhí)行COMMIT、ROLLBACK或SAVEPOINT語(yǔ)句,而且不可以調(diào)用執(zhí)行這些語(yǔ)句之一的函數(shù)或過(guò)程。
2.觸發(fā)器不可以聲明long或LONG RAW變量。
3.觸發(fā)器不可以在定義它的表上執(zhí)行DML操作(行級(jí)觸發(fā)器)
你在該觸發(fā)器中要讀取觸發(fā)器器所在的表的數(shù)據(jù)(數(shù)據(jù)DML操作), 這是不允許的.
你將行級(jí)觸發(fā)改成表級(jí)觸發(fā), 即去掉for each fow試試. 反正在你的語(yǔ)句中也沒(méi)有使用到NEW, OLD這兩個(gè)行級(jí)觸發(fā)器新值, 舊值記錄.
另外, 粗看你的代碼, 似乎更新沒(méi)有針對(duì)性(沒(méi)有針對(duì)內(nèi)容有變更的記錄對(duì)tb_budget進(jìn)行更新), 這樣做效率不高, 應(yīng)該考慮優(yōu)化你的更新邏輯和代碼.
在Order表上建立一個(gè)觸發(fā)器,拿得表只允許 ZhangSan修改,即使System管理員也不能修改,怎么建立觸發(fā)器 ?
CREATE OR REPLACE TRIGGER BeforeAllOrder
BEFORE INSERT OR UPDATE OR DELETE ON Order
FOR EACH ROW
BEGIN
IF USER != 'ZhangSan' THEN
RAISE_APPLICATION_ERROR(-20000, '只有 ZhangSan 可以修改這個(gè)表!');
END IF;
END;
在Students表上插入數(shù)據(jù),學(xué)號(hào)中不能含有-?!等等這種字符?
這種不需要觸發(fā)器,直接建立約束就可以了。
例如:
ALTER TABLE Students
ADD CONSTRAINT Students_No_check
CHECK ( INSTR(學(xué)號(hào), '-') = 0
AND INSTR(學(xué)號(hào), '?') = 0
AND INSTR(學(xué)號(hào), '!') = 0
)
參考資料:
Oracle 觸發(fā)器
Oracle異常處理
create or replace trigger jilu_date_end
before update of shenpi on jilu
for each row
declare
etime date;
begin
select sysdate into etime from dual;
//這里用update語(yǔ)句進(jìn)行那個(gè)時(shí)間更新即可
end jilu_date_end;