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;
原文地址:https://www.cnblogs.com/Jims2016/p/5637760.html