• 第七天、触发器的使用


    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;
    /

     

     

     

  • 相关阅读:
    jQuery Ajax 实例
    jQuery Ajax 实例
    mysql中使用MySqlParameter操作数据库
    mysql中使用MySqlParameter操作数据库
    MySQL limit 分页查询数据库
    html5新特性data_*自定义属性使用
    CSS中zoom和scale的区别
    Linux下nginx编译安装教程和编译参数详解
    nginx.conf配置
    linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
  • 原文地址:https://www.cnblogs.com/astar/p/1122143.html
Copyright © 2020-2023  润新知