zoukankan      html  css  js  c++  java
  • oracle的触发器的使用举例

      这个文章演示了oracle触发器的使用,以备不时之需

    -- 创建一个表,未来需要在这个表上建立触发器
    create table baby_test
    (id number(20),
    name varchar(50),
    birthday date,
    login_date timestamp
    );
    
    -- 创建一个保存触发器操作的表
    -- drop table baby_test_log;
    create table baby_test_log
    (id number(20),
    name varchar(50),
    insert_date date default sysdate,
    operate varchar2(50)
    );
    
    
    -- 创建一个触发器。当对baby_test表的数据插入,修改和删除的时候,向baby_test_log中插入数据
    CREATE OR REPLACE TRIGGER trg_baby_test BEFORE
        INSERT OR UPDATE or delete ON baby_test
    FOR EACH ROW DECLARE
        -- local variables here
     BEGIN
        CASE
            WHEN inserting THEN
                INSERT INTO baby_test_log (
                    id,
                    name,
                    operate
                ) VALUES (
                    :new.id,
                    :new.name,
                    'inserting'
                );
    
            WHEN updating('name') THEN
                INSERT INTO baby_test_log (
                    id,
                    name,
                    operate
                ) VALUES (
                    :old.id,
                    :old.name,
                    'updating name'
                );
                
            WHEN deleting THEN
                INSERT INTO baby_test_log (
                    id,
                    name,
                    operate
                ) VALUES (
                    :old.id,
                    :old.name,
                    'deleting'
                );
    
        END CASE;
      END;
    
    -- 测试触发器
    insert into baby_test
    select 1,'baby',to_date('19990101','yyyymmdd'), sysdate from dual;
    
    select * from baby_test;
    
    update baby_test
    set name = 'hugh'
    where id = 1;
    
    delete from baby_test where id = 1;
    
    -- 查看触发器的结果
    select * from baby_test_log;
  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/babyha/p/15021019.html
Copyright © 2011-2022 走看看