oracle之语句触发器创建

1、我们首先先去创建一张表:这里举例用的是teacher2表

create table teacher2(
tno varchar2(3) not null,
tname varchar2(9) not null,
tsex varchar2(3) not null,
tbirthday date,
prof varchar2(9),
depart varchar2(15) not null,
constraint pk_teacher2 primary key(tno)
);

oracle之语句触发器创建_第1张图片

 

 2、接下来:我们往表里插入数据,使表稍微完善一些:

insert into teacher2(tno,tname,tsex,tbirthday,prof,depart) values(804,'LC','M',to_date('1958/12/02','yyyy-mm-dd'),'TVM','JSJ');
insert into teacher2(tno,tname,tsex,tbirthday,prof,depart) values(856,'ZX','M',to_date('1969/03/12','yyyy-mm-dd'),'JS','DZGCX');
insert into teacher2(tno,tname,tsex,tbirthday,prof,depart) values(825,'WP','F',to_date('1972/05/05','yyyy-mm-dd'),'ZJ','JSJX');
insert into teacher2(tno,tname,tsex,tbirthday,prof,depart) values(831,'LB','F',to_date('1977/08/14','yyyy-mm-dd'),'ZJ','DZGCX');

oracle之语句触发器创建_第2张图片

 

 3、接下来我们给teacher2表创建一张teacher2_log数据表:用来操作种类信息和操作日期,,作用就是我们通过select * from teacher2_log查看新增的信息

create table teacher2_log
(
operate_tag varchar2(10), ---定义字段,存储操作种类信息
operate_time date); ---定义字段,存储操作日期

oracle之语句触发器创建_第3张图片

 

 4、接 下来  我们创建触发器 这个比较复杂的,首先写触发器名称,触发时机,on 表(这里的表是原表“teacher2”),if条件。。。。。。

create or replace trigger tri_teacher2list---tri_t2list是触发器名称
before insert or update or delete ----触发时机
on teacher2 ----on teacher2
declare ----声明内部变量
var_tag varchar2(10);----声明一个变量,存储对teacher2表执行的操作类型
begin
if inserting then ---当触发事件是插入时
var_tag:='insert'; ---标识为插入操作
elsif updating then ---当触发事件是更改时
var_tag:='update'; ---标识符为更新操作
elsif deleting then ---当触发事件时删除时
var_tag:='detele'; ---标识符为删除操作
end if;
insert into teacher2_log ----是之前创建的存储表
values(var_tag,sysdate); ---- 向日志存储表插入对teacher2表的操作信息
end tri_teacherlist; ----触发结束
/

oracle之语句触发器创建_第4张图片

 

 5、我们最后来验证一下:

insert into teacher2(tno,tname,tsex,tbirthday,prof,depart) values(826,'PC','F',to_date('1978/08/14','yyyy-mm-dd'),'ZJ','DZGCX');

 

 6、我再来查看一下日志存储表teacher2_log:   select * from teacher2_log.

oracle之语句触发器创建_第5张图片

 

 

 

完美结束。。。这个我也学了两天。。其中报错遇到很多问题。慢慢的研究 就解决了。

 

你可能感兴趣的:(oracle之语句触发器创建)