oracle触发器如何写 oracle触发器declare

oracle的触发器怎么写我以前做的一个例子,你参考下吧第八章触发器(Trigger)--格式:createorreplacetrigger名称[after|before][delete|update|insert][on表|onschema][referencingnewas别名oldas别名][foreachrow]declare.beginexception.end;--创建一个delete类型行级触发器--删除的一行数据保存在:oldcreateorreplacetriggeremp_delete_row_triggerafterdeleteonempreferencingnewasnoldasoforeachrowbegindbms_output.put_line('emp_delete_row_triggercalled.');dbms_output.put_line('删除员工:'||:o.empno||''||:o.ename);end;deletefromempwhereempno=7499;deletefromemp;--创建一个insert类型行级触发器--插入的一行新数据保存在:newcreateorreplacetriggeremp_insert_row_triggerafterinsertonempforeachrowbegindbms_output.put_line('emp_insert_row_triggercalled.');dbms_output.put_line('添加员工:'||:new.empno||''||:new.ename);end;insertintoemp(empno,ename)values(1,'empxxx');--创建一个update类型行级触发器--修改前的数据保存在:old--修改后的数据保存在:newcreateorreplacetriggeremp_update_row_triggerafterupdateonempforeachrowbegindbms_output.put_line('emp_update_row_triggercalled.');dbms_output.put_line('修改前:'||:old.empno||''||:old.ename);dbms_output.put_line('修改后:'||:new.empno||''||:new.ename);end;updateempsetename='xxxx'whereempno=7499;--语句级触发器(update,delete,insert)createorreplacetriggerdelete_stmt_triggerafterdeleteonempbegindbms_output.put_line('delete_stmt_triggercalled.');end;deletefromemp;--判断触发器类型------------------------------------------------------------每进行一次交易,就要调用触发器 , 自动扣除或增加账户金额----------------------------------------------------------createtableaccount(customerNamevarchar2(30)primarykey,cardIDvarchar2(8),currentMoneynumber);insertintoaccountvalues('Daivd','10010001',5000);insertintoaccountvalues('Jason','10010002',3000);createtabletrans(transDatedate,cardIDvarchar2(8),transTypevarchar2(10),transMoneynumber);insertintotransvalues(sysdate,'10010001','取款',1000);createorreplacetriggertrans_triggerbeforeinsertontransforeachrowdeclarev_currentMoneyaccount.currentMoney%type;begin--判断类型if:new.transType='取款'then--取款selectcurrentMoneyintov_currentMoneyfromaccountwherecardID=:new.cardID;ifv_currentMoney:new.transMoneythenraise_application_error(-20001,'余额不足');endif;updateaccountsetcurrentMoney=currentMoney-:new.transMoneywherecardID=:new.cardID;else--存款updateaccountsetcurrentMoney=currentMoney :new.transMoneywherecardID=:new.cardID;endif;exceptionwhenno_data_foundthenraise_application_error(-20002,'无效的帐户');end;--模式(schema)级触发器createorreplacetriggerschema_triggerbeforedroponschemabegindbms_output.put_line('schema_triggercalled');dbms_output.put_line(ora_dict_obj_name);dbms_output.put_line(ora_dict_obj_type);ifora_dict_obj_name='ACCOUNT'thenraise_application_error(-20003,'ACCOUNT表不能被删除');endif;end;droptableaccount;--ora_dict_obj_name操作对象名称--ora_dict_obj_type操作对象类型--启用触发器altertriggerschema_triggerenable;--禁用触发器altertriggerschema_triggerdisable;
请教 , oracle 触发器 , 怎么写首先oracle触发器如何写,触发器oracle触发器如何写的触发是需要条件的oracle触发器如何写,楼主的条件就是在b表中插入数据之后oracle触发器如何写,触发触发器,并update a 表中day 为 b 表中dayday,楼主可以这样写oracle触发器如何写:
CREATE OR REPLACE TRIGGER update_a
AFTER INSERT ON b
FOR EACH ROW
DECLARE
V_NO a.no%type;
V_DAY a.day%type;
BEGIN
SELECT no,dayday INTO v_no,v_day FROM b;
UPDATE a
SET DAY = V_DAY;
WHERE NO = V_NO;
END;
求一个简单的oracle 触发器 写法创建两个表:
create table a
(stdid int,
stdname varchar2(10));
create table b
(stdid int,
stdname varchar2(10));
创建触发器:
CREATE OR REPLACE TRIGGER tr_insert
after insert
ON a
FOR EACH ROW
BEGIN
INSERT INTO b(stdid,stdname)
VALUES(:new.stdid,:new.stdname);
END;
验证 , 在a表中插入数据:
insert into a values (1,'a');
commit;
验证b表结果:
【oracle触发器如何写 oracle触发器declare】关于oracle触发器如何写和oracle触发器declare的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读