触发器及触发器的作用

触发器是一种用来保障参照完整性的特殊的存储过程,它维护不同表中数据间关系的有关规则。当对指定的表进行某种特定操作(如:Insert,Delete或Update)时,触发器产生作用。触发器可以调用存储过程。

创建触发器的语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
Create Trigger[owner.]触发器名
On [owner.]表名
For {insert,update,delete}
As
Begin
SQL语句(块)
End

定义一个好的触发器对简化数据的管理,保证数据库的安全都有重要的影响。触发器是针对表一级的,这就意味着,只有表的所有者有权创建表的触发器。

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* 插入一个新行,必须保证外键与主键相匹配,触发器应该首先检查被插入行与主键表的连接。*/
#以下的触发器对inserted表和titles表的title_id进行比较,这里假设正在给外键输入数据,没有插入空值,若连接失败,事务被回退。insert,update,delete
Create trigger forinsertrigl
On salesdetail
For insert
As
If( select  count(*)
From title,inserted
Where titles.title_id=inserted.title_id)!=@@rowcount
Begin
Rollback transaction
Print “No,some title_id does not exist  in  titles.”
End
Else
Print “Added! All the title_id  is  exist  in  titles.”
/*
   在本例中,@@rowcount代表添加到salesdetail表的行数,这也是添加到inserted表中的行数。通过连接表titles和表inserted来检测所有添加到salesdetail的title_id是否在titles中存在。若所连接的行数(count(*))与@@rowcount不同,由有一个或多个插入不正确,整个事务被取消。*/

  

触发器的限制:

●一个表最多只能有三个触发器,insert,update,delete

●每个触发器只能用于一个表

●不能对视图、临时表创建触发器

●Truncate table能删除表,但不能触发触发器

●不能将触发器用于系统表

合理地使用触发器对性能的影响是正面的。在设计和使用触发器时,经常地用sp_depends命令了解对象所关联的触发器是有好处的,该命令能列出触发器影响的所有对象、表和视等。

在定义几类数据库对象的时候,对存储过程、索引和触发器要给予特别的注意,尤其存储过程,它设计的好坏对数据库性能的影响很大。

说明:Sybase触发器使用的两个测试表:Deleted表和Inserted表,它们都是临时表,其结构与触发器的基表结构相同,用来存放与修改相关的数据行。

常见的触发器有三种:分别应用于Insert,Update,Delete事件。

使用触发器的优点

触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。

触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。

触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣。</p< />

触发器及触发器的作用

触发器是一种用来保障参照完整性的特殊的存储过程,它维护不同表中数据间关系的有关规则。当对指定的表进行某种特定操作(如:Insert,Delete或Update)时,触发器产生作用。触发器可以调用存储过程。

创建触发器的语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
Create Trigger[owner.]触发器名
On [owner.]表名
For {insert,update,delete}
As
Begin
SQL语句(块)
End

定义一个好的触发器对简化数据的管理,保证数据库的安全都有重要的影响。触发器是针对表一级的,这就意味着,只有表的所有者有权创建表的触发器。

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* 插入一个新行,必须保证外键与主键相匹配,触发器应该首先检查被插入行与主键表的连接。*/
#以下的触发器对inserted表和titles表的title_id进行比较,这里假设正在给外键输入数据,没有插入空值,若连接失败,事务被回退。insert,update,delete
Create trigger forinsertrigl
On salesdetail
For insert
As
If( select  count(*)
From title,inserted
Where titles.title_id=inserted.title_id)!=@@rowcount
Begin
Rollback transaction
Print “No,some title_id does not exist  in  titles.”
End
Else
Print “Added! All the title_id  is  exist  in  titles.”
/*
   在本例中,@@rowcount代表添加到salesdetail表的行数,这也是添加到inserted表中的行数。通过连接表titles和表inserted来检测所有添加到salesdetail的title_id是否在titles中存在。若所连接的行数(count(*))与@@rowcount不同,由有一个或多个插入不正确,整个事务被取消。*/

  

触发器的限制:

●一个表最多只能有三个触发器,insert,update,delete

●每个触发器只能用于一个表

●不能对视图、临时表创建触发器

●Truncate table能删除表,但不能触发触发器

●不能将触发器用于系统表

合理地使用触发器对性能的影响是正面的。在设计和使用触发器时,经常地用sp_depends命令了解对象所关联的触发器是有好处的,该命令能列出触发器影响的所有对象、表和视等。

在定义几类数据库对象的时候,对存储过程、索引和触发器要给予特别的注意,尤其存储过程,它设计的好坏对数据库性能的影响很大。

说明:Sybase触发器使用的两个测试表:Deleted表和Inserted表,它们都是临时表,其结构与触发器的基表结构相同,用来存放与修改相关的数据行。

常见的触发器有三种:分别应用于Insert,Update,Delete事件。

使用触发器的优点

触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。

触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。

触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣。</p< />

触发器及触发器的作用相关推荐

  1. (trigger)触发器的定义和作用

    (trigger)触发器的定义和作用 博客分类: Oracle SQL C C++ C# F#  第一:触发器(trigger) 触发器(trigger)是指隐含执行的存储过程procedure,当定 ...

  2. php触发器 优点,触发器的作用

    触发器的作用 试题: 触发器的作用有哪些? 答案: 触发器的作用[由Www.estong.Com整理] 1.允许/限制对表的修改 2.自动派生列如自增字段 3.强制数据的一致性 4.带给审计和日志记录 ...

  3. mysql触发器新元组_MySQL触发器-条件触发器语法

    文章为作者原创,未经许可,禁止转载.    -Sun Yat-sen University 冯兴伟 实验4触发器 (1)实验目的 掌握数据库触发器的设计和使用方法 (2)实验内容和要求 定义BEFOR ...

  4. 了解SQL Server触发器及触发器中的事务

    引述 首先,写这篇文章的目的是望能把我对触发器的理解,分享出来与大家一起学习.如果你对触发器和事务的概念有些了解,这篇文章对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,以及触发器中事 ...

  5. 【转】了解SQL Server触发器及触发器中的事务

    引述 首先, 说下我写篇文章的目的,我希望能把我对触发器的理解,分享出来与你一起学习.如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事, ...

  6. Oracle触发器3-DDL触发器

    DDL触发器,当执行DDL语句时会被触发.按照作用范围,分为schema triggers,database triggers.schema triggers作用在一个用户上,database tri ...

  7. oracle行级的触发器,Oracle触发器Trigger2行级

    create table trigger_t2( id int, name varchar(30), age int ); /* --创建一个before update的触发器-控制每一行,行级 -- ...

  8. ORACLE查出表所有的触发器及触发器详细信息

    ORACLE查出表所有的触发器及触发器详细信息 一.查all_triggers表得到trigger_name Sql代码 select trigger_name from all_triggers w ...

  9. java oracle 触发器_Oracle 触发器

    一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需 ...

最新文章

  1. 吴恩达老师深度学习视频课笔记:深度卷积网络
  2. Win7系统安装MySQL5.5.21图解教程
  3. 总结一下一般游戏中3D模型各种勾边方法遇到的工程性问题
  4. 手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码
  5. 字符串替换方法的优劣
  6. C语言函数的递归调用
  7. 【计算机网络原理】各层的数据传输
  8. 计算机wps函数的使用,职称计算机考试WPS 使用技巧
  9. 利用tcp协议实现大文件传输(socket)
  10. mysql关系范式试题_数据库范式练习题
  11. 上月用得好好的支付宝获取月账单的Java接口,月初突然返回“入参不合法”的解决方法
  12. 如何快速批量建网站?
  13. python爬虫应聘信息_python爬虫获取拉钩网在线搜索招聘信息(超实用!)
  14. Outlook 2013 英文版 设置收信规则
  15. Java在编译到执行过程的编码问题
  16. JDBC,你真的知道怎么用吗?
  17. SWFObject 2.0的使用说明
  18. 计算机初级培训教学大纲,计算机初级培训教学大纲.doc
  19. 无痕偷看小黄片,全被监视吗?
  20. 网络编程“惊群“问题

热门文章

  1. 数字化转型,目的是为了转型还是数字化?
  2. Three.js - 通过 AnimationMixer混合器解析骨骼动画
  3. 各种智能手机系统介绍
  4. linux下的oracle中文乱码,linux系统中oracle出现中文乱码怎么办
  5. android颜色(图片)和对应的值-----颜色和值直观显示
  6. c语言代码错误c2059,error C2059: 语法异常:“常量”
  7. 每日一练:第三天——乌托邦树
  8. 防爆温湿度传感器:保障工业安全环境的关键设备
  9. 退役军人学计算机专业好就业吗,退伍军人学IT怎么样?
  10. 基于LLVM的编译原理简明教程 (1) - 写编译器越来越容易了