触发器ora-04091_触发器-1

触发器ora-04091

该线程包含一些有关oracle中TRIGGERS的有用的技巧/示例代码,论坛成员可能会觉得有用。

触发器:

===============

数据库触发器是对数据库中的事件执行的PL / SQL块。

该事件与表的特定数据操作有关,例如插入,删除或更新表的行。

可以使用触发器:

1.实施复杂的业务规则,这不能使用完整性约束来实现。

2.审核过程。 例如,跟踪对表所做的更改。

3.在发生其他相关动作时自动执行动作。 例如,只要在另一张表中插入一行,就更新一张表。

触发器类型:

------------------------

根据触发触发器的时间,可以将其归类为:

语句级触发器

b。行触发

c。触发前

d。触发后

e。代替触发器

句法:

-----------

创建[或替换]触发触发器名称

{之前| 之后| 代替}

{删除| 插入| UPDATE [OF列]}

[或{删除| INSERT | UPDATE [OF列]}] ...

在table_name | SCHEMA

[正在刷新[旧的旧版本] [新的新版本]]

[每行[当条件时]]

<PL / SQL块>

触发样本示例#1

====================


CREATE OR REPLACE TRIGGER  MYTRIG AFTER INSERT OR DELETE ON EMP
DECLARE
MCOUNT NUMBER;
BEGIN
SELECT COUNT(*) INTO MCOUNT FROM EMP;
--checks the number of records in the table.
DBMS_OUTPUT.PUT_LINE('THE TOTAL NUMBER OF EMPLOYEE ARE:' || MCOUNT);
--and displays the same after the event .
END;  
触发示例Ex#2

================

CREATE OR REPLACE TRIGGER ONLYPOSITIVE BEFORE INSERT OR UPDATE OF SAL ON EMP FOR EACH ROW
BEGIN
IF :NEW.SAL<0 THEN
--checks of the value inserted into teh sal column is less than 0.
RAISE_APPLICATION_ERROR(-20100,'PLEASE INSERT A POSITIVE VALUE');
--if valus is less than 0 ,then raise the exception.
END IF;
END;
注意:-Trigger不允许负值插入/更新到表中。

触发范例#3

==================

CREATE OR REPLACE TRIGGER NODELETE BEFORE INSERT OR UPDATE OR DELETE ON DEPT FOR EACH ROW
BEGIN
IF INSERTING THEN
RAISE_APPLICATION_ERROR(-20020,'CAN''T INSERT NEW RECORDS TO THIS TABLE');
ELSIF UPDATING THEN
RAISE_APPLICATION_ERROR(-20021,'CAN''T UPDATE RECORDS OF THIS TABLE');
ELSIF DELETING THEN
RAISE_APPLICATION_ERROR(-20022,'YOU ARE NOT AUTHORISED TO DELETE THESE RECORDS');
END IF;
END;
注意:-触发器通过不允许在其上使用任何DML来使触发器变为只读。

触发示例示例4

================


create or replace trigger mytrig
before insert on emp
declare
a char(3);
begin
--selects the system day to the vaiable.
select to_char(sysdate,'dy') into a from dual;
if a in('sun','sat') then
--restrict any transaction on saturday and sunday.
Raise_application_error(-20004,'Cannot do manipulation today');
end if;
end;
注意:-此触发器将限制周末桌上的交易。

还要检查

触发器-2

翻译自: https://bytes.com/topic/oracle/insights/753142-triggers-1-a

触发器ora-04091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值