• 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;
  • 相关阅读:
    js正则验证邮箱格式
    PHP面向对象简易验证码类
    php 中 instanceof 操作符
    防止SQL注入
    通过实例详细讲解PHP垃圾回收机制
    PHP实现上传视频的功能
    二维数组分组
    时间戳转换为几分钟、几小时、几天、几周、几月、几年前
    自定义接口错误响应格式
    laravel写crontab定时任务(发送邮件)和laravel crontab不执行的问题
  • 原文地址:https://www.cnblogs.com/Jims2016/p/5637760.html
Copyright © 2020-2023  润新知