首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ORACLE触发器(trigger)的使用

1、触发器说明 触发器是一种事件发生时隐式地自动执行的PL/SQL块,不能接受参数,不能被显式调用 2、触发器类型 根据触发器所创建的语句及所影响的对象的不同,将触发器分为以下3类 (1)DML触发器...,与语句所影响到的行数无关 before触发器或after触发器before触发器触发事件发生之前执行触发器代码,after触发器则在触发事件发生之后执行 语法: create [or replace...,DML触发器主要为insert、update、delete等 table_name:表名,表示发生触发器作用的对象 for each row:指定创建的是行级触发器,若没有该子句则创建的是语句级触发器...when trigger_condition:添加的触发条件 trigger_body:触发体,是标准的PL/SQL语句块 (2)替代触发器(instead of触发器) 对视图进行操作时定义的触发器...(before触发器) 创建触发器:实现id的隐式自增 create or replace trigger modify_stu before insert on student for each row

95340
您找到你想要的搜索结果了吗?
是的
没有找到

还不了解MySQLl存储过程与触发器的创建使用?

因为我们要在存储过程或触发器执行sql语句,所以会用到';',如果不改其它符号而使用';'作为语句结束符的话,mysql遇到';'就当作一条语句完成了,而存储过程或触发器sql语句都没写完全呢,这样只会...如果不使用触发器我们就需要执行两条sql语句,第一条是修改用户信息的sql语句,第二条是添加一个日记记录的sql语句。...而如果使用触发器,当用户信息修改时触发触发器执行添加一条日记记录,这样也会比在业务代码执行两条sql语句效率要高。 那么如果创建一个触发器呢?...create trigger 触发器名称 after|before insert|delete|update on 表名 for each row  begin      #触发器要做的事情  end ...触发的条件:insert|delete|update 即可选增删改时触发;比如alter insert,就是添加完成之后触发,执行时机与触发条件可随意组合使用,即 before insert before

81020

PLSQL --> DML 触发器

简言之,是一段命名的PL/SQL代码块,只不过该代码块特定的条件下被触发并且执行。对于这样的代码我们称之为触发器 。...2.DML触发器的触发顺序 a.单行数据上的触发顺序(触发代码仅被执行一次) BEFORE 语句级触发器 BEFORE 行级触发器 AFTER 行级触发器 AFTER 语句级触发器 b.多行数据上的触发顺序...(语句级触发器仅被执行一次,行级触发器每个作业行上被执行一次) BEFORE 语句级触发器 BEFORE 行级触发器 AFTER 行级触发器 BEFORE 行级触发器 AFTER 行级触发器...限制行级触发器是通过添加[WHEN condition]判断条件,来对满足特定condition的记录触发触发器。...6.创建DML触发器的注意事项 DML触发器不能包含对基表的DQL查询操作 CREATE OR REPLACE TRIGGER tr_emp_sal BEFORE UPDATE OF sal

1.5K30

触发器学习笔记(:new,:old用法)

####触发器是数据库发生某个操作时自动运行的一类的程序 用于保持数据的完整性或记录数据库操作信息方面 触发器不能够被直接调用,只能够某些事件发生时被触发,也就是系统自动进行调用 CREATE...,但是触发器不一定会做实际的工作,比如when 后的条件不为真的时候,触发器只是简单地跳过了PL/SQL块. ---- ####触发器分为语句级触发器和行级触发器 语句级触发器是指每执行一条DML...语句,该触发器就执行一次 行级触发器是指每个DML操作影响几条记录,就会触发几次(for each row) 行级触发器由于涉及到了每条记录的数据变动,所以对于每条记录的数据来说就有新值和旧值之分...提示: :NEW :OLD ####功能实现 当往emp表内添加字段且deptno=10的时候 往emp_copy表copy此数据 emp表更新数据时且修改deptno=10 的时候...update , insert , delete 时,一定是事务提交之后才会触发触发器 before 和after的区别:beforeinsert update 可以对new进行修改

87720

Oracle触发器详细讲解

细分它的组成可以分为3个部分:第一部分在什么条件下触发器会执行,即触发器被触发的事件。第二部分在什么时间点执行触发器触发器的发生事件例如before,after。...第三部分触发器自身所要做的事情,就是触发器被触发以后具体想表达的事件,begin和end 之间的sql。 二、触发器的分类: 1、ddl触发器:即执行ddl操作后所触发的事件。...Example:禁止周四,周五修改emp表数据 CREATE OR REPLACE TRIGGER emp_trigger BEFORE UPDATE OR DELETE OR INSERT ON emp...***用来表示更改以前的表的数据,:new.***用来表示更改以后的数据,删除数据以后日志表就有对应的记录。...继续替代触发器的概念:关键字insteadof,主要针对一些复杂的视图,因为级联表所产生的视图不可以使用update,insert,delete等关键字,没有before,after等关键字,并且不可以建立

84220

Oracle触发器用法实例详解

详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以某些语句执行前或执行后被触发。而行级触发器则是定义的了触发的表的行数据改变时就会被触发一次。...具体举例: 1、 一个表定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。...2、 一个表定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。...1)、下面的触发器更新表tb_emp之前触发,目的是不允许在周末修改表: create or replace trigger auth_secure before insert or update or...,比较emp表更新的工资 --创建触发器 set serveroutput on; CREATE OR REPLACE TRIGGER SAL_EMP  BEFORE UPDATE ON EMP  FOR

97010

【DB笔试面试448】Oracle中有哪几类触发器

触发器的PL/SQL应用相关名称时,必须在它们之前加冒号,但在WHEN子句中则不能加冒号。 l WHEN子句说明触发约束条件。...(USER, SYSDATE, 'I'); ELSIF DELETING THEN INSERT INTO SCOTT.MYLOG_LHR VALUES (USER, SYSDATE...尽管触发器本身不会引发错误,但借助于该过程可以使用PL/SQL来访问错误堆栈 LOGON AFTER 成功登录连接到数据库后触发 LOGOFF BEFORE 开始断开数据库连接之前触发 CREATE BEFORE...、AFTER 执行CREATE语句创建数据库对象之前、之后触发 DROP BEFORE、AFTER 执行DROP语句删除数据库对象之前、之后触发 ALTER BEFORE、AFTER 执行ALTER...l 触发器的执行部分只能使用DML语句(例如SELECT、INSERT、UPDATE、DELETE等),不能使用DDL语句(例如CREATE、ALTER、DROP等)。

2K10
领券