Oracle触发器
首先创建学生表:
--创建学生表 CREATE TABLE students( name varchar2(12), birthday date, age number, sales number);
然后我们创建触发器,当往学生表中插入数据,就触发另一个操作(这里我们打印出插入的数据)
对应的触发器代码如下:
--创建与students关联的触发器 CREATE OR REPLACE TRIGGER trg_stu_insert AFTER INSERT ON students FOR EACH ROW DECLARE BEGIN dbms_output.put_line('Name:'||:new.name); dbms_output.put_line('Birthday:'||:new.birthday); dbms_output.put_line('Age:'||:new.age); dbms_output.put_line('Sales:'||:new.sales); dbms_output.put_line('触发器已经执行成功'); dbms_output.put_line('触发器已经执行成功'); END trg_stu_insert;
这里 :new 对象表示了插入的记录,可以通过:new.columnName来引用记录的每个字段值
注意这里用到了:dbms_output.put_line()函数,所以在执行的时候我们需要打开这个输出函数,所以事先执行:
set serveroutput on;
好了,这样我们在插入一条数据的时候就会打印出插入的信息。
INSERT INTO students values('Jim',sysdate,23,12341);
最终执行的效果:
红色部分就是触发器执行的内容,当然这触发器的内的操作可以由你自己决定。
当如果是insert和update均触发的情况,可以这么写:(只需要用or连接)
--如果是插入(insert)和更新(update)都触发的情况 CREATE OR REPLACE TRIGGER trg_stu_Insert_Update AFTER INSERT OR UPDATE ON students FOR EACH ROW DECLARE BEGIN dbms_output.put_line('触发器插入和更新已经执行成功'); END trg_stu_Insert_Update;
再加删除的话,可以添加:
CREATE OR REPLACE TRIGGER trg_stu_DDL AFTER INSERT OR UPDATE OR DELETE ON students FOR EACH ROW DECLARE BEGIN dbms_output.put_line('触发器插入和更新以及删除已经执行成功'); END trg_stu_DDL;