1、触发器语法

CREATE [OR REPLACE] TIGGER 触发器名

[before|after] --触发时间

[insert|update|delete] --触发事件

ON 表名

[FOR EACH ROW]

BEGIN

    pl/sql语句

END;

其中:

触发器名:触发器对象的名称。

由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。

触发时间:指明触发器何时执行,该值可取:

before---表示在数据库动作之前触发器执行;

after---表示在数据库动作之后出发器执行。

触发事件:指明哪些数据库动作会触发此触发器:

insert:数据库插入会触发此触发器;

update:数据库修改会触发此触发器;

delete:数据库删除会触发此触发器。

表 名:数据库触发器所在的表。

for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

2、触发器实例:(使用触发器实现序号自增)

创建一个测试表:

create table tab_user(
     id number(11) primary key,
     username varchar(50),
     password varchar(50)
);

创建一个序列:

create sequence MY_SEQ increment by 1 start with 1 nomaxvalue nocycle cache 20;

创建一个触发器:

create or replace trigger MY_TGR
before insert on tab_user for each row
declare
 next_id number;
begin
  select MY_SEQ.nextval into next_id from dual;
  :new.id:=next_id;
end;

向表插入数据;

insert into tab_user(username,password) values('admin','admin');
insert into tab_user(username,password) values('fgz','fgz');
insert into tab_user(username,password) values('test','test');

查询表结果:

posted on 2009-07-17 18:21  Nicholas_F  阅读(11807)  评论(0编辑  收藏  举报