zoukankan      html  css  js  c++  java
  • 第七天、触发器的使用

    7.触发器的使用
    当数据库中的表发生增,删,改就会触发对应的触发器,然后执行相应的SQL语句

    1.触发器的概述、分类

    2.事务的概述
    事务是数据库中重要的机制,用于确保数据完整性和并发处理性的能力。
    它将一条或一组SQL语句当作成一个逻辑上的单元,用于保障这些语句都成功/失败。

    事务的特性:ACID
    A(Atomicity):原子性  当对某一个表进行操作的时候,增删改,不可分隔的。操作两个或两个以上的表的时候可能有一个成功一个不成功的可能,这样就产生了数据的不完整性。
    C(Consistency):一致性
    I(Isolation):隔离性  隔离等级
    D(Durability):永久性  一旦回提交了就不能再回滚了,一旦回就不能再提交了
    在ORACLE中执行DELETE做的操作是没有提交的。执行COMMIT就提交了,ROLLBACK则返回,回滚,回撤。
    SELECT * FROM BOOKS FOR UPDATE;当我没有完成COMMIT,其它的用户就不成UPDATE.这就是加锁的过程。

    3.行级触发器的工作原理
    针对增删改而展开的。
    SELECT * FROM emp;
    SELECT * FROM deptment;
    行级创建触发器:
    CREATE OR REPLACE TRIGGER del_deptid
    AFTER DELETE ON deptment
    FOR EACH ROW
    BEGIN
    DELETE FROM emp WHERE id=:old.id;
    END del_deptid;
    /
    插入触发器:
    CREATE OR REPLACE TRIGGER insert_dept
    AFTER INSERT ON deptment
    FOR EACH ROW
    BEGIN
    INSERT INTO emp(eid,ename,id) values('','',:new.id);
    END;
    /
    注:old.id,new.id  OLD就是对做动作的表
    INSERT动作时支持NEW,DELETE时支持OLD,UPDATE时支持OLD,NEW

    CREATE OR REPLACE TRIGGER books_delete
    AFTER DELETE ON books
    FOR EACH ROW
    BEGIN
    IF :old.books_id='01'; THEN         不允许删除01的记录
    RAISE_APPLICATION_ERROR(-200000,'不允许删除');
    END IF;
    END;
    /

    5.语句级触发器的设计应用
    CREATE OR REPLACE TRIGGER dml_aa
    AFTER INSERT OR REPLACE OR UPDATE
    BEGIN
    IF INSERTING THEN
    INSERT INTO mylog values(user);
    ELSE DELETING THEN
    INSERT INTO mylog VALUES(USER);
    END IF;
    END;
    /

    CREATE OR REPLACE TRIGGER set_no
    BEFORE INSERT ON auto
    FOR EACH ROW
    DECLARE
    sn nummber(5);
    BEGIN
    SELECT myseq.nextval INTO sn FROM dual;
    :NEW.a:=sn;
    END;
    /

    6.替换触发器的应用  只能用在视图上
    CREATE OR REPLACE TRIGGER tr
    INSTEAD OF INSERT ON v
    FOR EACH ROW
    BEGIN
    INSERT INTO de values(...);
    INSERT INTO emp values(...);
    END;
    /

     

     

     

  • 相关阅读:
    AUDIT审计的一些使用
    HOW TO PERFORM BLOCK MEDIA RECOVERY (BMR) WHEN BACKUPS ARE NOT TAKEN BY RMAN. (Doc ID 342972.1)
    使用BBED理解和修改Oracle数据块
    Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC [ID 1340831.1]
    调试利器GDB概念
    第4章 思科IOS
    第3章 ip地址和子网划分
    第2章 TCPIP
    2020年阅读过的黑客资源推荐篇
    第1章 计算机网络
  • 原文地址:https://www.cnblogs.com/astar/p/1122143.html
Copyright © 2011-2022 走看看