- 浏览: 455836 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
触发器--
是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
例子:
触发器的组成部分:
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作
1、 触发器名称
create trigger biufer_employees_department_id
命名习惯:
biufer(before insert update for each row)
employees 表名
department_id 列名
2、 触发语句
比如:
表或视图上的DML语句
DDL语句
数据库关闭或启动,startup shutdown 等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
说明:
1、 无论是否规定了department_id ,对employees表进行insert的时候
2、 对employees表的department_id列进行update的时候
3、 触发器限制
when (new_value.department_id<>80 )
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
其中的new_value是代表更新之后的值。
4、 触发操作
是触发器的主体
begin
:new_value.commission_pct :=0;
end;
主体很简单,就是将更新后的commission_pct列置为0
触发:
insert into employees(employee_id,
last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )
values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);
select commission_pct from employees where employee_id=12345;
触发器不会通知用户,便改变了用户的输入值。
触发器类型:
1、 语句触发器
2、 行触发器
3、 INSTEAD OF 触发器
4、 系统条件触发器
5、 用户事件触发器
1、 语句触发器
是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。
例子:
需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。
Create table foo(a number);
Create trigger biud_foo
Before insert or update or delete
On foo
Begin
If user not in (‘DONNY’) then
Raise_application_error(-20001, ‘You don’t have access to modify this table.’);
End if;
End;
/
即使SYS,SYSTEM用户也不能修改foo表
是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
例子:
--创建表 create table employees( employee_id number(4), last_name varchar2(8), first_name varchar2(8), hire_date date, job_id number(4), email varchar2(30), department_id number(4), salary number(4), commission_pct number(4,2) ); --创建触发器 create trigger biufer_employees_department_id --触发语句 before insert or update of department_id on employees referencing old as old_value new as new_value for each row --触发器限制 when (new_value.department_id<>80 ) begin :new_value.commission_pct :=0;--触发操作 end; --插入语句 insert into employees(employee_id, last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct) values( 1234,'Chen','Donny', sysdate, 12, 'donny@hotmail.com',60,1000,.25); --查询 select * from employees e where e.employee_id=1234; 结果发现commission_pct字段被触发器修改为0.0了!
触发器的组成部分:
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作
1、 触发器名称
create trigger biufer_employees_department_id
命名习惯:
biufer(before insert update for each row)
employees 表名
department_id 列名
2、 触发语句
比如:
表或视图上的DML语句
DDL语句
数据库关闭或启动,startup shutdown 等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
说明:
1、 无论是否规定了department_id ,对employees表进行insert的时候
2、 对employees表的department_id列进行update的时候
3、 触发器限制
when (new_value.department_id<>80 )
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
其中的new_value是代表更新之后的值。
4、 触发操作
是触发器的主体
begin
:new_value.commission_pct :=0;
end;
主体很简单,就是将更新后的commission_pct列置为0
触发:
insert into employees(employee_id,
last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )
values( 12345,’Chen’,’Donny’, sysdate, 12, ‘donny@hotmail.com’,60,10000,.25);
select commission_pct from employees where employee_id=12345;
触发器不会通知用户,便改变了用户的输入值。
触发器类型:
1、 语句触发器
2、 行触发器
3、 INSTEAD OF 触发器
4、 系统条件触发器
5、 用户事件触发器
1、 语句触发器
是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。能够与INSERT、UPDATE、DELETE或者组合上进行关联。但是无论使用什么样的组合,各个语句触发器都只会针对指定语句激活一次。比如,无论update多少行,也只会调用一次update语句触发器。
例子:
需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。
Create table foo(a number);
Create trigger biud_foo
Before insert or update or delete
On foo
Begin
If user not in (‘DONNY’) then
Raise_application_error(-20001, ‘You don’t have access to modify this table.’);
End if;
End;
/
即使SYS,SYSTEM用户也不能修改foo表
发表评论
-
java开发实战视频详解
2017-07-02 08:09 510java开发实战视频详解 链接: http://pan.bai ... -
mysql在window下备份
2013-02-03 09:25 1042命令:mysqldump –uroot –ppassword ... -
NoSQL非关系型数据库
2011-08-23 10:25 1500NoSQL(NoSQL = Not Only SQL ), ... -
Oracle 编码再回顾
2011-02-15 10:53 1157一、什么是Oracle字符集 ... -
位图索引与 B-tree 索引:选择与时间
2010-08-26 10:58 1575位图索引与 B-tree 索引:选择与时间 了解每个索引的正 ... -
Oracle的redo 和undo的区别
2010-07-28 15:33 1038redo--> undo-->datafile i ... -
Oracle归档模式与非归档模式设置
2010-07-16 16:14 1729Oracle的日志归档模式可以有效的防止instance和d ... -
比较牛逼的插入SQL语句
2010-06-02 10:22 1896MessageDaoImpl.java$saveMessa ... -
oracle的分析函数over 及开窗函数
2010-03-07 20:53 1079一:分析函数over Oracle从8.1.6开始提 ... -
Oracle Case 条件函数
2010-03-02 10:53 1301select dx.docid, case ... -
关于两表关联的update
2010-02-23 13:38 1701-- update 一个字段 update a ... -
oracle客户端编码修改
2010-02-04 12:15 1901从注册表修改:HKEY_LOCAL_MACHINE\SOFTW ... -
Oracle两个数据库间的数据同步 (DBLink 、计划任务)
2010-01-31 19:42 7263--配置本地数据库服务器的tnsnames.ora文 ... -
Oracle乱码最佳解决方案(JDK动态代理)
2010-01-18 17:29 4345该文章所解决的问题是Oracle下,乱码问题 描述: 1.库服 ... -
Oracle数据库字符集问题解析
2009-12-14 16:15 1034经常看到一些朋友问OR ... -
Oracle函数大全
2009-12-14 16:13 941SQL中的单记录函数 1.ASCII 返回与指定的字 ... -
导入导出
2009-11-10 09:50 928导入命令: 1.cmd进入命令行; (1)无连接登录o ... -
两种外连接
2009-10-26 13:54 950select cpxx.cp_xh, ... -
Oracle Blob (二进制文件的读写)
2009-10-18 23:16 6158import java.io.FileNotFoundEx ... -
Oracle时间操作
2009-08-21 16:04 967一.插入当前日期 //构造系统时间的字符串 Str ...
相关推荐
D触发器只有一个数据输入D,其输出Q的下一个状态(Qn+1)取决于当前时钟周期内的D输入状态(Qn=D)。D触发器通常具有边沿触发特性,这意味着只有在时钟脉冲的上升沿或下降沿,D输入的变化才会被捕捉并影响输出。...
这些触发器通过级联方式连接,每个触发器的输出连接到下一个触发器的时钟输入,形成一个环形结构。这样,每个JK触发器的计数状态变化都会触发下一个触发器,从而实现从0000到1111的二进制计数,即十进制的0到15。 ...
一、JK触发器的基本结构与工作原理 JK触发器由两个D触发器级联而成,通过内部的逻辑门电路实现了J和K输入的逻辑功能。其名称来源于"J"(Jump)和"K"(Kill),这两个输入分别控制触发器的状态转换。当J=1,K=0时,...
D触发器是一种更为常用的触发器类型,它具有单一的数据输入端和时钟输入端,并在每个时钟上升沿根据数据输入端的状态更新其输出状态。 #### 3.1 基本D触发器 一个简单的D触发器可以这样实现: ```verilog module D_...
JK触发器是数字电路中的一种基本时序逻辑元件,它具有两种稳定状态,可以用来存储一位二进制信息。在本场景中,我们将利用JK触发器设计一个七进制计数器,即一个能从0计数到6,并在达到最大值后重新回到0的循环...
根据给定的文件信息,我们可以了解到这是一篇关于数据库触发器的例子。触发器是数据库管理系统中的一个重要特性,它允许用户定义响应数据修改(如插入、更新或删除操作)时自动执行的一系列SQL语句。接下来,我们将...
在实验中,我们重点关注D触发器,这是一种边沿触发的设备,其输出仅在时钟信号的上升沿或下降沿发生变化,且变化取决于输入D的状态。D触发器的主要功能是实现数据的无毛刺传输,确保在非触发时刻输出保持不变。 第...
RS触发器的一个显著特性是,当S和R输入同时为高电平“1”时,触发器将进入不确定的状态,一般认为这是一个不推荐的操作,因为它会导致输出不稳定。 SR触发器的命名规则与RS触发器相反,但功能上其实与RS触发器一致...
- 名称:给触发器一个符合标识符规则的唯一名称。 - 表:触发器将作用于哪个表。 - 触发时机:何时触发,如INSERT、DELETE或UPDATE。 - 动作:触发时应执行的操作。 在SQL:99标准中,创建触发器的语法涉及`...
基于Multisim14,绘制的JK触发器及D触发器构成计数型触发器仿真.
在mysql 5.7.2+版本之前,我们只能为表中的事件创建一个触发器,例如,只能为BEFORE UPDATE或AFTER UPDATE事件创建一个触发器。 mysql 5.7.2+版本解决了这样限制,并允许我们为表中的相同事件和动作时间创建多个...
- **四分频**:通过两个串联的D触发器,每个触发器在时钟脉冲下接收到反相的前一级输出,使得Q端的值每两个时钟周期翻转一次,因此输出频率为输入频率的四分之一。 6. **实验总结**: - 实验帮助理解了各种触发器...
在DB2中创建触发器是数据库管理中的一个重要环节,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)执行之前或之后自动运行预定义的SQL语句。本文将详细介绍如何在DB2数据库中创建一个触发器,以及触发器的...
JK触发器是一种广泛应用于数字电路设计中的基本单元,具有较强的通用性和稳定性。JK触发器的波形图绘制是理解其工作原理的关键步骤,尤其是在分析主从JK触发器的行为时。主从JK触发器由两个独立的JK触发器组成,一个...
触发器是数据库管理系统中的一个重要概念,它是一种存储过程,能够在特定事件发生时自动执行,比如当数据被插入、更新或删除时。在本主题中,我们将深入探讨触发器的原理、类型、用法以及在实际数据库操作中的应用。...
D触发器的特点是它只有一个数据输入端D,以及一个时钟输入端CLK。在时钟信号的上升沿或下降沿到来时,D触发器会将输入端的数据传输到输出端Q。D触发器可以被用作简单的存储单元,即一位寄存器。 #### 二、二分频的...
触发器作为基础的存储元件,其核心特性在于它们能维持两种稳定状态,代表二进制的0和1,并在特定条件下能够从一种状态翻转至另一种状态。 1. **基本RS触发器**: RS触发器由两个与非门交叉耦合构成,提供置"0"(S=...
RS触发器(Reset-Set Flip-Flop)和SR触发器(Set-Reset Flip-Flop)是数字电子学中非常基础的逻辑电路组件,它们属于触发器的一种类型。触发器是一种双稳态的存储设备,能够存储一位二进制数(0或1),并且在输入...