ORACLE觸發器詳細建立

2021-07-02 18:29:14 字數 2351 閱讀 2983

--為cardinfo表建立insert事前觸發器,實現新增賬戶資訊時自動向userinfo表新增相應記錄,需要判斷改使用者身份證號是否已存在,若存在則不新增,僅向cardinfo新增即可;

create or replace trigger tri_insert

before insert on cardinfo

for each row

begin

declare

card userinfo.user_card %type;

begin

select user_card into card from userinfo where user_id=:new.user_id;  

exception

when no_data_found then

insert into userinfo values(:new.user_id,'張揚','男','15639700250','41147199101228466');

end;

end;

commit;

insert into userinfo values(2015001,'張揚','男','15639700250','41147199101228466');

select * from userinfo;

--2、為traninfo表建立insert觸發器,實現新增交易記錄時自動修改cardinfo表中相應賬戶的餘額,注意應判斷交易型別,若「支取」則餘額減少,若「存入」則餘額增加;

create or replace trigger tri_insert_tranifo

before insert on transinfo

for each row

declare money cardinfo.current_money %type;

begin

select current_money into money where card_id=:new.card_id;

if :new.tran_type='支取' and money>=:new.tran_money 

then

update cardinfo set current_money=current_money-:new.tran_money where card_id=:new.card_id;

else if 

:new.tran_type='存入' then

update cardinfo set current_money=current_money+:new.tran_money where card_id=:new.card_id;

end if;

end if;

exception

when no_data_found then

dbms_output.put_line(:new.tran_money);

end;

--呼叫

declare

trid number:=66622700||trunc(80000*dbms_random.value);

cid char(18):=6227||to_char(sysdate,'yyyymmddhh24miss');

begin  

insert into transinfo values(trid,'6221003',default,'存入',300.00);

end;

commit;

--3、為cardinfo表新增update觸發器,實現修改餘額時的業務規則應用,不允許餘額小於0,否則報錯。

create or replace trigger tri_cardinfo_update

before update on cardinfo

for each for

begin

if :new.current_money<0then

dbms_output.put_line('對不起,您的卡上當前餘額不足!');

end if;

end;

--  4、為transinfo表新增delete觸發器,實現刪除交易記錄時將刪除的資料進行備份,備份到temptrans表中。

create or replace trigger tri_transinfos_delete

after delete on transinfo for each row

begin

insert into temptrans values(:old.tran_id,:old.card_id,:old.tran_date,:old.tran_type,:old.tran_money);

end;

commit;

select * from dept;

Oracle建立觸發器

首先要講一下觸發器的概念 觸發器是由於dml語句的執行引發的一種特殊的資料庫物件。所以呢他的型別就要insert,instead of update,delete 三種觸發器。基本用法如下面所示 建立刪除觸發器 create or replace trigger tri delete after d...

oracle建立觸發器

工作需要,需要建立乙個觸發器,判斷表中的id是否為空,如果為空的時候需要用觸發器加上id,如果沒有觸發觸發器加上id,如果有則不觸發觸發器。建立乙個序列,每次加乙個 create sequence 序列名稱 increment by 1 每次加乙個 建立乙個觸發器 create or replace...

建立oracle觸發器

create trigger 觸發器名稱 before after 執行前觸發還是執行後觸發 insert update delete on 表名 for each row begin 觸發的sql語句 如果只有一條sql語句,可省略begin,end end 觸發器中可能會用到兩種值,一種是修改之...