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;
  • 相关阅读:
    邪恶的强制数据转换
    知识普及
    判断是否为一个数字
    parseInt
    webpack学习记录
    数组隐藏属性
    elasticSearch基本使用
    elasticsearch安装和部署
    neo4j索引
    spark yarn 提交作业
  • 原文地址:https://www.cnblogs.com/Jims2016/p/5637760.html
Copyright © 2011-2022 走看看