`

Trigger触发器

 
阅读更多

 

 

 

/**
语句级触发器,能同时被insert、update、delete触发,记录到表中:
触发时记录什么动作发生在emp表上,是否修改了ename列以及是否修改了empno列**/
CREATE OR REPLACE TRIGGER tri_dml_emp
  BEFORE insert or update OF ENAME, EMPNO or delete on emp
DECLARE
  V_TYPE VARCHAR2(10);
  V_DESC VARCHAR2(100);
BEGIN
  IF INSERTING THEN
    V_TYPE := 'INS';
  ELSIF UPDATING THEN
    V_TYPE := 'UPD';
  ELSIF DELETING THEN
    V_TYPE := 'DEL';
  END IF;
  IF UPDATING('EMPNO') THEN
    V_DESC := '更新EMPNO';
  ELSE
    V_DESC := '没有更新EMPNO';
  END IF;
  IF UPDATING('ENAME') THEN
    V_DESC := '更新ENAME';
  ELSE
    V_DESC := '没有更新ENAME';
  END IF;
  INSERT INTO BB VALUES (V_TYPE, V_DESC);
END TRI_DML_EMP;


/**编写一个行级触发器,能同时被insert、update、delete触发,记录到表中:
  触发时记录什么动作发生在emp表上,是否修改了ename列以及是否修改了empno列
  如果修改了ename列,请记录修改前和修改后的值**/
CREATE OR REPLACE TRIGGER dml_emp
  BEFORE insert or update OF ENAME, EMPNO or delete on emp
  FOR EACH ROW
DECLARE
  V_TYPE VARCHAR2(10);
  V_DESC VARCHAR2(100);
BEGIN
  IF INSERTING THEN
    V_TYPE := 'INS';
  ELSIF UPDATING THEN
    V_TYPE := 'UPD';
  ELSIF DELETING THEN
    V_TYPE := 'DEL';
  END IF;
 
  IF UPDATING('ENAME') THEN
    V_DESC := '更新ENAME,原ENAME=' || :OLD.ENAME || '  新ENAME=' || :NEW.ENAME;
  ELSE IF UPDATING('EMPNO') THEN
     V_DESC := '更新EMPNO,原EMPNO=' || :OLD.EMPNO || '  新EMPNO=' || :NEW.EMPNO;
     ELSE 
    V_DESC := '没有更新';
  END IF;
  END IF;
  
  INSERT INTO BB VALUES (V_TYPE, V_DESC);
END DML_EMP;
分享到:
评论

相关推荐

    trigger触发器trigger触发器trigger触发器

    --行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...

    mysqltrigger触发器.pdf

    根据提供的文件信息,本文将重点解析 MySQL 5.0 版本中新引入的触发器功能,并结合描述中的信息深入探讨其特性和应用场景。 ### MySQL 5.0 触发器 #### 引言 MySQL 5.0 版本是一个重要的里程碑,因为它引入了许多...

    如何制定自己的SQL Server 2000触发器

    DROP TRIGGER 触发器名称, 触发器名称... 在删除触发器之前可以先看一下触发器是否存在: IF Exists(select name from sysobjects where name=触发器名称 and xtype='TR') 也可以在企业管理器中删除触发器,在表...

    DB-实验八触发器.docx

    ALTER TRIGGER 触发器名称ON {表名|视图名}{FOR|AFTER|INSTEAD OF}{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }AS sql 语句 各参数的含义与创建触发器时的含义相同。 三、删除触发器 删除触发器的语句是 ...

    触发器学习笔记

    create trigger 触发器的名字 on 操作表 for (after | instead of) 事件类型 (insert | update | delete) as SQL语句 触发器的作用 触发器的作用有很多,例如: * 实施复杂的安全性检查 * 做审计,跟踪表上所做的...

    触发器实例

    DROP TRIGGER 触发器名1; GO CREATE TRIGGER 触发器名1 ON B AFTER INSERT AS BEGIN UPDATE A SET A.13 = A.13 + inserted.23 FROM A, inserted WHERE A.11 = inserted.21 AND A.12 = inserted.22 END GO ``` ...

    实验12触发器与作业.pdf

    触发器的创建语法为:CREATE [OR REPLACE] TRIGGER 触发器名 触发时间 触发事件 ON 表名 [FOR EACH ROW] BEGIN pl/sql 语句 END。其中,触发器名是触发器的名称,触发时间是触发器的触发时间,触发事件是触发器的...

    SQL数据库触发器 SQL数据库触发器

    CREATE TRIGGER 触发器名 disibledevent=rMode FROM Deleted -- 向日志表中插入一条简单的删除事件日志 INSERT INTO uSysLog (lEvent) VALUES ('用 户 删 除 了 流 水 号 为 :' + CAST(@intID asnvarchar(20) + ',...

    Trigger [触发器ok].sql

    Trigger [触发器ok].sql

    oracle触发器语法要点

    CREATE [OR REPLACE] TRIGGER 触发器名 触发时间 触发事件 ON 表名 [FOR EACH ROW] BEGIN PL/SQL语句 END 触发器名; ``` - **触发器名**:触发器的名称。这个名称是为了标识触发器而存在的,实际运行过程中并不...

    第17章_触发器.docx

    创建触发器的语法结构是:`CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块;` 其中,`触发器名称` 是触发器的名字,`表名` 是触发器监控的对象,`...

    实验6触发器与作业综述.pdf

    实验6主要围绕数据库中的触发器(Trigger)展开,旨在帮助学生理解触发器的概念、设计与使用,以及在Oracle数据库中如何实现定时作业。触发器是一种数据库对象,它会在特定的数据库事件(如INSERT、UPDATE、DELETE)...

    数据库触发器的ppt

    CREATE TRIGGER 触发器名 ON 表名| 视图 [WITH ENCRYPTION] -- 可选,加密触发器 { FOR | AFTER | INSTEAD OF [DELETE] [,INSERT] [,UPDATE] } AS SQL 语句 ``` - `FOR`触发器在事件发生前执行。 - `AFTER`...

    数据库高级应用技术触发器PPT学习教案.pptx

    CREATE TRIGGER 触发器名称 触发时间点 触发事件 ON 表名 FOR EACH ROW BEGIN … END; ``` 触发时间点可以是`BEFORE`或`AFTER`,表示在触发事件之前或之后执行。触发事件包括`INSERT`、`UPDATE`和`DELETE`。 删除...

    数据库原理及应用MySQL-触发器部分的知识点整理

    1. **概念**:触发器(Trigger)是MySQL提供的一种数据库对象,它在满足特定条件(如数据修改)时自动执行,以确保业务规则得到遵循。 2. **特点**:触发器的执行不依赖于程序调用,而是由数据库事件触发,如对表的...

    MySQL从入门到实战学习教程之11触发器.pptx

    Create trigger 触发器名称 触发时机 触发事件 on 表名 for each row Begin 触发程序; End; 其中,触发器名称在当前数据库下必须唯一,触发时机可以是Before或After,表示触发器在激活它的语句之前或之后触发。...

    第十次触发器PPT课件.pptx

    此外,还可以通过ALTER TRIGGER语句来修改触发器的行为,使用DISABLE TRIGGER和ENABLE TRIGGER来禁用或启用触发器,以及DROP TRIGGER来彻底删除触发器。这些操作有助于在开发和维护过程中对触发器进行控制,以适应...

    第17章_触发器3

    - **创建语法**:`CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块;` - `表名`:触发器作用的表。 - `BEFORE|AFTER`:决定触发器是在事件之前还是...

    mysql触发器实例

    内含mysql的trigger触发器实例,修改即可使用。。。。。。

Global site tag (gtag.js) - Google Analytics