zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    robotframework安装与配置--学习第一天
    Google chrome浏览器打不开网页,显示ERR_Failed...等问题的解决方法
    解决dos窗口乱码问题
    打印风车旋转效果
    spring Security 得到认证用户名的方法
    spring requestmapping 拦截多个请求
    github多人协同使用。
    Spring boot Security 用于权限管理,用户添加等。
    spring boot上传 下载图片。
    mysql修改数据库编码(数据库字符集)和表的字符编码的方法
  • 原文地址:https://www.cnblogs.com/Jims2016/p/5637760.html
Copyright © 2011-2022 走看看