/**
语句级触发器,能同时被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;
分享到:
相关推荐
--行级触发器 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_...
根据提供的文件信息,本文将重点解析 MySQL 5.0 版本中新引入的触发器功能,并结合描述中的信息深入探讨其特性和应用场景。 ### MySQL 5.0 触发器 #### 引言 MySQL 5.0 版本是一个重要的里程碑,因为它引入了许多...
DROP TRIGGER 触发器名称, 触发器名称... 在删除触发器之前可以先看一下触发器是否存在: IF Exists(select name from sysobjects where name=触发器名称 and xtype='TR') 也可以在企业管理器中删除触发器,在表...
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 ``` ...
触发器的创建语法为:CREATE [OR REPLACE] TRIGGER 触发器名 触发时间 触发事件 ON 表名 [FOR EACH ROW] BEGIN pl/sql 语句 END。其中,触发器名是触发器的名称,触发时间是触发器的触发时间,触发事件是触发器的...
CREATE TRIGGER 触发器名 disibledevent=rMode FROM Deleted -- 向日志表中插入一条简单的删除事件日志 INSERT INTO uSysLog (lEvent) VALUES ('用 户 删 除 了 流 水 号 为 :' + CAST(@intID asnvarchar(20) + ',...
Trigger [触发器ok].sql
CREATE [OR REPLACE] TRIGGER 触发器名 触发时间 触发事件 ON 表名 [FOR EACH ROW] BEGIN PL/SQL语句 END 触发器名; ``` - **触发器名**:触发器的名称。这个名称是为了标识触发器而存在的,实际运行过程中并不...
创建触发器的语法结构是:`CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块;` 其中,`触发器名称` 是触发器的名字,`表名` 是触发器监控的对象,`...
实验6主要围绕数据库中的触发器(Trigger)展开,旨在帮助学生理解触发器的概念、设计与使用,以及在Oracle数据库中如何实现定时作业。触发器是一种数据库对象,它会在特定的数据库事件(如INSERT、UPDATE、DELETE)...
CREATE TRIGGER 触发器名 ON 表名| 视图 [WITH ENCRYPTION] -- 可选,加密触发器 { FOR | AFTER | INSTEAD OF [DELETE] [,INSERT] [,UPDATE] } AS SQL 语句 ``` - `FOR`触发器在事件发生前执行。 - `AFTER`...
CREATE TRIGGER 触发器名称 触发时间点 触发事件 ON 表名 FOR EACH ROW BEGIN … END; ``` 触发时间点可以是`BEFORE`或`AFTER`,表示在触发事件之前或之后执行。触发事件包括`INSERT`、`UPDATE`和`DELETE`。 删除...
1. **概念**:触发器(Trigger)是MySQL提供的一种数据库对象,它在满足特定条件(如数据修改)时自动执行,以确保业务规则得到遵循。 2. **特点**:触发器的执行不依赖于程序调用,而是由数据库事件触发,如对表的...
Create trigger 触发器名称 触发时机 触发事件 on 表名 for each row Begin 触发程序; End; 其中,触发器名称在当前数据库下必须唯一,触发时机可以是Before或After,表示触发器在激活它的语句之前或之后触发。...
此外,还可以通过ALTER TRIGGER语句来修改触发器的行为,使用DISABLE TRIGGER和ENABLE TRIGGER来禁用或启用触发器,以及DROP TRIGGER来彻底删除触发器。这些操作有助于在开发和维护过程中对触发器进行控制,以适应...
- **创建语法**:`CREATE TRIGGER 触发器名称 {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名 FOR EACH ROW 触发器执行的语句块;` - `表名`:触发器作用的表。 - `BEFORE|AFTER`:决定触发器是在事件之前还是...
内含mysql的trigger触发器实例,修改即可使用。。。。。。