1 oracle中触发器是当进行操作时触发事情,进行处理。例如进行对数据表进行插入、更新和删除时进行触发事情处理。
定义触发器的是:create or replace trigger xxx
before|after insert |update|delete
on 数据库表名
for each row --这是表示对每一行操作都会触发事件
begin
sql语句;
end;
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
2 oracle中用于输出语句。通过dbms_output.put_line(xxxxx)
如:dbms_output.put_line(':old.name'||:old.name);
尽量的要使用||。括号里的需要时字符。而||是连接使用的。连接后就成字符了。
3 oracle中的触发器可以写if语句来进行判断。
格式为:
if 条件 then
sql语句;
end if;
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('进行的是插入操作');
end if;
if updating then
dbms_output.put_line('进行的是更新操作');
end if;
if deleting then
dbms_output.put_line('进行的是删除操作');
end if;
end;
4 在oracle中的触发器中,可以判断是否是insert还是update还是delete
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('进行的是插入操作');
end if;
if updating then
dbms_output.put_line('进行的是更新操作');
end if;
if deleting then
dbms_output.put_line('进行的是删除操作');
end if;
end;
5 在oracle中的触发器中,可以使用‘:new’和‘:old’,:new表示是即将进行(插入或更新)操作的sql语句中的字段。
而:old表示进行(更新或删除)操作时的sql语句中的字段
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
6 oracle中对字段进行赋值时,使用":="。
如: v_type:='insert';
7 oracle中的触发器中不能对自己表进行插入更新删除操作。但可以对别的表进行这些操作。
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
declare v_type varchar2(10);
begin
if inserting then
v_type:='insert';
end if;
if updating then
v_type:='update';
end if;
if deleting then
v_type:='delete';
end if;
insert into log values(user,v_type,sysdate);
end;
但如果要对自己表进行插入更新删除操作则会报错。导致不能运行结束。
如:以下的触发器会报错,要多注意!!!!
如:create or replace trigger test4_t
after delete
on demo
for each row
begin
insert into demo values(:old.nm,:old.name,:old.password);
end;
定义触发器的是:create or replace trigger xxx
before|after insert |update|delete
on 数据库表名
for each row --这是表示对每一行操作都会触发事件
begin
sql语句;
end;
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
2 oracle中用于输出语句。通过dbms_output.put_line(xxxxx)
如:dbms_output.put_line(':old.name'||:old.name);
尽量的要使用||。括号里的需要时字符。而||是连接使用的。连接后就成字符了。
3 oracle中的触发器可以写if语句来进行判断。
格式为:
if 条件 then
sql语句;
end if;
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('进行的是插入操作');
end if;
if updating then
dbms_output.put_line('进行的是更新操作');
end if;
if deleting then
dbms_output.put_line('进行的是删除操作');
end if;
end;
4 在oracle中的触发器中,可以判断是否是insert还是update还是delete
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('进行的是插入操作');
end if;
if updating then
dbms_output.put_line('进行的是更新操作');
end if;
if deleting then
dbms_output.put_line('进行的是删除操作');
end if;
end;
5 在oracle中的触发器中,可以使用‘:new’和‘:old’,:new表示是即将进行(插入或更新)操作的sql语句中的字段。
而:old表示进行(更新或删除)操作时的sql语句中的字段
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
6 oracle中对字段进行赋值时,使用":="。
如: v_type:='insert';
7 oracle中的触发器中不能对自己表进行插入更新删除操作。但可以对别的表进行这些操作。
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
declare v_type varchar2(10);
begin
if inserting then
v_type:='insert';
end if;
if updating then
v_type:='update';
end if;
if deleting then
v_type:='delete';
end if;
insert into log values(user,v_type,sysdate);
end;
但如果要对自己表进行插入更新删除操作则会报错。导致不能运行结束。
如:以下的触发器会报错,要多注意!!!!
如:create or replace trigger test4_t
after delete
on demo
for each row
begin
insert into demo values(:old.nm,:old.name,:old.password);
end;