Oracle开启器简易完成

2021-03-17 10:05 jianzhan
緊racle】开启器简易完成 总体目标:完成即时备份数据uertest表数据信息至usertest_temp中,两表构造一致 处理:用oracle开启器完成同歩 結果: 1.建表 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [sql] -- 简易的客户表 create table USERTEST ( NAME VARCHAR2(20) not null, AGE NUM

Oracle开启器简易完成

Oracle开启器简易完成--table

緊racle】开启器简易完成

总体目标:完成即时备份数据uertest表数据信息至usertest_temp中,两表构造一致

处理:用oracle开启器完成同歩

結果:

1.建表

[sql]

-- 简易的客户表

create table USERTEST

(

NAME VARCHAR2(20) not null,

AGE NUMBER,

ISDELETE VARCHAR2(4)

)

-- 备份数据表

create table USERTEST_TEMP

(

NAME VARCHAR2(20) not null,

AGE NUMBER,

ISDELETE VARCHAR2(4)

)

2、开启器

[sql]

CREATE OR REPLACE TRIGGER tr_user_temp

BEFORE

INSERT OR UPDATE OR DELETE

ON usertest FOR EACH ROW

declare

BEGIN

IF inserting THEN

INSERT INTO usertest_temp(name,age,isdelete)

VALUES

(

:new.name,

:new.age,

:new.isdelete

);

ELSIF deleting THEN

DELETE usertest_temp

WHERE

NAME =:OLD.NAME ;

ELSIF updating THEN

update usertest_temp

SET age =:new.age,

isdelete =:new.isdelete

WHERE

NAME =:OLD.NAME ;

END IF ;

END ;

3.对USERTEST表实行删改改查实际操作,则usertest_temp表也会相对变更

留意:标点一定如果英语标点,不然会出现编译程序不正确

了解

定义:

开启器(trigger)是个独特的储存全过程,它的实行是由恶性事件来开启全自动地隐式运作[例如当对一个表开展实际操作( insert,delete,update)时便会激话它实行]。开启器常常用以提升数据信息的详细性管束和业务流程标准等。 开启器能够从 DBA_TRIGGERS ,USER_TRIGGERS 数据信息字典中查出。开启器与储存全过程的唯一差别是开启器不可以实行EXECUTE句子启用,只是再用户实行Transact-SQL句子时全自动开启实行。

建立英语的语法:

[sql]

CREATE [OR REPLACE] TRIGGER trigger_name

{BEFORE | AFTER }

{INSERT | DELETE | UPDATE [OF column [, column ]]}

[OR {INSERT | DELETE | UPDATE [OF column [, column ]]}...]

ON [schema.]table_name | [schema.]view_name

[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]

[FOR EACH ROW ]

[WHEN condition]

PL/SQL_BLOCK | CALL procedure_name;

注解:

CREATE [OR REPLACE] TRIGGER:建立或更换

BEFORE 和AFTER:开启时钟频率各自为前开启【在实行开启恶性事件以前开启当今所建立的开启器】和后开启方法【在实行开启恶性事件以后开启当今所建立的开启器】

FOR EACH ROW:行开启器。

行开启器:遭受危害的每一个数据信息行,要是他们合乎开启管束标准,均激话一次开启器;

句子开启器:将全部句子实际操作做为开启恶性事件,当它合乎管束标准时,激话一次开启器。

当省去FOR EACH ROW 选择项时,BEFORE 和AFTER 开启器为句子开启器,而INSTEAD OF 开启器则只有为行开启器。

REFERENCING:表明有关名字,内行开启器的PL/SQL块和WHEN 子句中可使用有关名字参考当今的新、旧列值,默认设置的有关名字各自为OLD和NEW。开启器的PL/SQL块中运用有关名字时,务必在他们以前加冒号(:),但在WHEN子句中则不可以加冒号。

WHEN 子句表明开启管束标准。

Condition 为一个逻辑性表述时,在其中务必包括有关名字,而不可以包括查寻句子,都不会调用PL/SQL 涵数。

WHEN 子句特定的开启管束标准只有用在BEFORE 和AFTER 行开启器中,不可以用在INSTEAD OF 行开启器和其他种类的开启器中。

留意下列几个方面:

1.开启器不接纳主要参数。

2.一个表上数最多会有1两个开启器,但同时、朋友、类似的开启器只有有一个且不能分歧。

3.在一个表上的开启器越大,对在该表上的DML实际操作的特性危害就会越大。

4. 开启器较大为32KB。若的确必须,能够先创建全过程,随后在开启器选用CALL句子开展启用。

5. 在开启器的实行一部分只有用DML句子(SELECT、INSERT、UPDATE、DELETE),不可以应用DDL句子(CREATE、ALTER、DROP)。

6. 开启器中不可以包括事务管理操纵句子(COMMIT,ROLLBACK,SAVEPOINT)。

7.在开启器行为主体中启用的一切全过程、涵数,也不能应用事务管理操纵句子。

8. 在开启器行为主体中不可以声明一切Long和blob自变量。新值new和旧值old都不能向表格中的一切long和blob列。

9.不一样种类的开启器(如DML开启器、INSTEAD OF开启器、系统软件开启器)的英语的语法文件格式和功效有很大差别。

难题:当开启器被开启时,要应用被插进、升级或删掉的纪录中的列值,有时候要应用实际操作前、 后列的值.

完成: :NEW 装饰符浏览实际操作进行后列的值

:OLD 装饰符浏览实际操作进行前端的值

特点 INSERT UPDATE DELETE

OLD NULL 具体值 具体值

NEW 具体值 具体值 NULL 共享到:
文中"Oracle开启器简易完成"由远航网站站长搜集梳理而成,仅作大伙儿学习培训与参照应用。大量网站建设实例教程尽在远航网站站长站。