1:建表
CREATE TABLE t1 (
tid VARCHAR2(20),
tname VARCHAR2(20)
)
CREATE TABLE logg(
n_id VARCHAR2(20),
n_name VARCHAR2(10),
n_value VARCHAR2(40)
)
CREATE OR REPLACE TRIGGER tri_up_del_inser
BEFORE INSERT OR UPDATE OR DELETE --insert update delete 触发
ON t1
FOR EACH ROW
DECLARE
n_tid VARCHAR2(20);
log_id VARCHAR2(20); --日志id (就是t1表的tid)
log_value VARCHAR2(40); --日志的value (就是对tname的u d i )
log_name VARCHAR2(10); -- 日志的name (INSERT UPDATE DELETE)
BEGIN
IF inserting THEN
SELECT 'TID'||lpad(substr(nvl(MAX(tid),'TID000'),4,3)+1,3,0) INTO n_tid FROM t1;
:NEW.tid := n_tid;
log_id :=n_tid;
log_name :='INSERT';
log_value := :NEW.tname;
ELSIF updating THEN
log_id :=:OLD.tid;
log_name :='UPDATE';
log_value := :NEW.tname;
ELSIF deleting THEN
log_id :=:OLD.tid;
log_name :='DELETE';
log_value := :OLD.tname;
END IF;
INSERT INTO logg VALUES(log_id,log_name,log_value);
END;
重要知识点:
:new.tid ---->表示你要新增加的记录的自动编号
:old.tname ----->表示你要删除时的tname
inserting updating deleting
if inserting then
elsif updating then
elsif deleting then
end if;
分享到:
相关推荐
在Oracle数据库中,触发器(Triggers)是一种存储过程,它们自动执行,当特定的数据库事件发生时,如INSERT、UPDATE或DELETE操作。调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的...
DML事件包括INSERT、UPDATE和DELETE三种。DML触发器可以在 BEFORE 或 AFTER 触发事件中执行,在执行时可以访问触发事件前的旧数据和触发事件后的新数据。DML触发器可以用于实现数据的完整性和业务逻辑的实现。 DDL...
在Oracle数据库中,触发器是一种特殊类型的存储过程,它会在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。在这个场景中,我们关注的是一个特定的触发器,它在插入数据后被调用,并通过存储过程来...
* 每个 insert、delete、update 影响的行;如果有,最先执行行级 before 触发器。 * 执行行的 delete 或 update。 * 如果有,执行行级 after 触发器。 * 如果有,执行语句级 after 触发器。 使用触发器可以管理数据...
**Before**触发器在DML操作(如INSERT、UPDATE、DELETE)执行之前触发,允许在操作实际发生前进行数据检查、预处理或阻止不合规的数据变更。例如,Before INSERT触发器可用于验证新插入的记录是否满足特定的业务规则...
触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动执行。通过触发器,数据库管理员可以实现对数据的复杂逻辑控制和数据完整性的保障。 在Oracle中,存储过程是预先编译...
触发器是一种存储过程,它与表或视图关联,并在对这些对象执行特定类型的数据库操作(如INSERT、UPDATE、DELETE)时自动执行。触发器可以在数据修改前或后执行,这为实现复杂业务逻辑提供了强大的支持。 #### 如何...
在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整性检查等操作。本文将通过三个具体的例子来展示如何创建和...
自增序列可以确保数据的唯一性,而触发器则可以在特定事件(如INSERT、UPDATE或DELETE)发生时执行一些额外的操作。本压缩包"Oracle自增序列和触发器生成工具"提供了一种便捷的方式,帮助开发者快速生成这些必要的...
而"触发器"则是一种特殊的存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。 Oracle Job调度存储过程的使用步骤通常包括以下几个部分: 1. **创建存储过程**:首先,你需要编写一个...
2. **语句级触发器**:与行级触发器相反,语句级触发器在DML语句(INSERT、UPDATE、DELETE)执行时触发,无论操作涉及多少行。这意味着,即使影响了多行,触发器也只执行一次。 3. **复合触发器**:复合触发器允许...
Oracle触发器是一种数据库对象,它会在特定的数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行。触发器常用于实现数据完整性约束、业务规则或审计功能。创建触发器的语法如下: ```sql CREATE TRIGGER ...
1. 语句触发器:例如create trigger biud_foo before insert or update or delete on foo 2. 行触发器:例如create trigger biufer_employees_department_id before insert or update of department_id on employees...
- **替代触发器**(INSTEAD OF):仅应用于视图,当试图在视图上执行INSERT、UPDATE或DELETE时,替代实际的DML操作执行自定义的行为。 2. **DML触发器的要点**: - **触发表**:触发器与特定的表相关联,对表上的...
它们可以在DML(数据操纵语言)操作(如DELETE、INSERT、UPDATE)前或后执行,也可响应DDL(数据定义语言)操作(如CREATE、ALTER、DROP),以及服务器错误、用户登录/登出、数据库启动/关闭等事件。 **2. 类型与...
在Oracle数据库中,**Instead-of触发器**主要用于处理视图上的数据操作语言(DML)操作,如`INSERT`、`UPDATE`或`DELETE`。由于视图本身不是实际的数据存储结构,而是基于一个或多个基础表通过查询构建的逻辑表,...
在Oracle中,触发器是一种特殊类型的数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用来强制业务规则、审计数据变化或触发其他数据库操作。然而,触发器不适合用于大数据...
Oracle触发器是数据库管理系统中的一种特殊程序,它与数据库表的操作紧密相关,可以在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行。在本实验报告中,主要涉及了Oracle触发器与参照完整性约束的...
而触发器则是一种特殊类型的存储过程,它会在特定的数据修改操作(如INSERT、UPDATE或DELETE)发生时自动执行,以确保数据的完整性和一致性。 文章中提到,自动增加流水号是数据库管理中的常见需求。流水号作为唯一...
- 行级触发器:在对单条记录进行INSERT、UPDATE或DELETE操作时触发,对每条受影响的记录执行一次。 - 语句级触发器:在执行DML语句后触发,无论操作影响多少记录,只执行一次。 2. 触发事件: - INSERT:在插入...