第十章存储过程触发器及自定义函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整性。 (4)触发器可以禁止或回滚违反引用完整性的更改; (5)级联、并行运行; (6)触发器可以嵌套。
第十章存储过程触发器及自定义函
数据库实用技术
Baidu Nhomakorabea
10.2 触发器
第十章 存储过程、触发器、自定义函数
SQL Server 2008提供三类触发器: DML触发器:
• 在数据库中发生数据操作(如:INSERT、UPDATE、DELETE) 事件时自动执行。
[INSERT][,][UPDATE][,][DELETE] --指定数据修改操作
AS
T-SQL语句或语句块
[;] 第十章存储过程触发器及自定义函
数据库实用技术
触发器
• 参数说明如下:
第十章 存储过程、触发器、自定义函数
− 触发器名:触发器名称,必须遵守标识符命名规则,不能以#
或##开头。
− WITH ENCRYPTION:指定对触发器进行加密处理。
• 当模板修改完成后,单击窗口工具栏中的“执行”按钮, 创建该触发器。
第十章存储过程触发器及自定义函
数据库实用技术
触发器
第十章 存储过程、触发器、自定义函数
• 比如选择Customer表,打开触发器模板,其模板代码如 下:
……
CREATE TRIGGER <Schema_Name, sysname,
帐户信息表bank
张三开户1000元, 李四开户1元
张三取钱200
交易信息表最tra优nsI的nfo解决方案就是采用触问 没发题有器:自:动修改张三的余额 它是一种特殊的存储过程
也具备事务的功能
它能在多表之间执行特殊的业务规则
演示: 为什么需要触发器.sql
第十章存储过程触发器及自定义函
数据库实用技术
赵二退休 删除
员工表
张三 李四 王五 赵二
什么是触发器
触发器触发 插入
退休员工表
王三 宋二 刘五 赵二
第十章存储过程触发器及自定义函
数据库实用技术
10.2 触发器
第十章 存储过程、触发器、自定义函数
❖ 10.2.1 触发器概念
触发器(Trigger)是在对表进行插入、更新或删除操作 时自动执行的存储过程。
数据库实用技术
inserted 和deleted 表2-1
触发器触发时:
系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除
inserted 表
临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作
deleted表 ------
删除(DELETE)记录
-----
存放被删除的记录
修改(UPDATE)记录
存放更新后的记录
存放更新前的记录
inserted表和deleted表存放的信息
第十章存储过程触发器及自定义函
数据库实用技术
触发器
❖ 10.2.2 创建触发器
第十章 存储过程、触发器、自定义函数
1.DML触发器
INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra
result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
Schema_Name>.<Trigger_Name, sysname,
Trigger_Name>
ON <Schema_Name, sysname, Schema_Name>
<Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, ,
DDL触发器:
• 在服务器或数据库中发生数据定义(如:CREATE、ALTER、 DROP)事件时自动执行。该类触发器可用于执行一些数据库 管理任务。
登录触发器:
• 在与SQL Server实例建立用户会话时自动执行,主要用来审核 和控制服务器会话。为响应 LOGON 事件而激发存储过程。
第十章存储过程触发器及自定义函
DML触发器在用户对表中的数据进行插入(INSERT)、 修改(UPDATE)和删除(DELETE)时自动运行。
使用触发器模板创建触发器(略):
• 在展开SQL Server实例中,依次展开“数据 库”→“BillingSys”→“表”,继续展开要创建触发 器的具体表节点,选择“触发器”,右击选择“新建触 发器”命令,打开“查询编辑器”,在“查询编辑器” 中出现触发器的编程模板。
END
GO
第十章存储过程触发器及自定义函
数据库实用技术
触发器
第十章 存储过程、触发器、自定义函数
使用CREATE TRIGGER创建 DML触发器:
• 语法格式如下:
CREATE TRIGGER <触发器名>
ON <表名|视图名>
[WITH ENCRYPTION]
FOR|AFTER|INSTEAD OF --触发器的类型
触发器通常用于强制业务规则
触发器是一种高级约束,可以定义比用CHECK 约束更为复杂 的约束
可执行复杂的SQL语句(if/while/case)
可引用其它表中的列
第十章存储过程触发器及自定义函
数据库实用技术
触发器的优点
(1)触发器自动执行; (2)可以调用存储过程; (3)可以强化数据条件约束;常用来实现复杂的数据完
deleted 表
临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作
第十章存储过程触发器及自定义函
数据库实用技术
inserted 和deleted 表2-2
修改操作 增加(INSERT)记录
inserted表 存放新增的记录
数据库实用技术 SQL Server 2008
第十章 存储过程、触发器 和自定义函数
第十章存储过程触发器及自定义函
数据库实用技术
第十章 存储过程、触发器、自定义函数
1
存储过程
2
触发器
3
用户自定义函数
4
实训:T-SQL编程的高级应用
第十章存储过程触发器及自定义函
数据库实用技术
为什么需要触发器
为什么需要触发器(TRIGGER)呢?典型的应用就是银行的 取款机系统
第十章存储过程触发器及自定义函
数据库实用技术
Baidu Nhomakorabea
10.2 触发器
第十章 存储过程、触发器、自定义函数
SQL Server 2008提供三类触发器: DML触发器:
• 在数据库中发生数据操作(如:INSERT、UPDATE、DELETE) 事件时自动执行。
[INSERT][,][UPDATE][,][DELETE] --指定数据修改操作
AS
T-SQL语句或语句块
[;] 第十章存储过程触发器及自定义函
数据库实用技术
触发器
• 参数说明如下:
第十章 存储过程、触发器、自定义函数
− 触发器名:触发器名称,必须遵守标识符命名规则,不能以#
或##开头。
− WITH ENCRYPTION:指定对触发器进行加密处理。
• 当模板修改完成后,单击窗口工具栏中的“执行”按钮, 创建该触发器。
第十章存储过程触发器及自定义函
数据库实用技术
触发器
第十章 存储过程、触发器、自定义函数
• 比如选择Customer表,打开触发器模板,其模板代码如 下:
……
CREATE TRIGGER <Schema_Name, sysname,
帐户信息表bank
张三开户1000元, 李四开户1元
张三取钱200
交易信息表最tra优nsI的nfo解决方案就是采用触问 没发题有器:自:动修改张三的余额 它是一种特殊的存储过程
也具备事务的功能
它能在多表之间执行特殊的业务规则
演示: 为什么需要触发器.sql
第十章存储过程触发器及自定义函
数据库实用技术
赵二退休 删除
员工表
张三 李四 王五 赵二
什么是触发器
触发器触发 插入
退休员工表
王三 宋二 刘五 赵二
第十章存储过程触发器及自定义函
数据库实用技术
10.2 触发器
第十章 存储过程、触发器、自定义函数
❖ 10.2.1 触发器概念
触发器(Trigger)是在对表进行插入、更新或删除操作 时自动执行的存储过程。
数据库实用技术
inserted 和deleted 表2-1
触发器触发时:
系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除
inserted 表
临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作
deleted表 ------
删除(DELETE)记录
-----
存放被删除的记录
修改(UPDATE)记录
存放更新后的记录
存放更新前的记录
inserted表和deleted表存放的信息
第十章存储过程触发器及自定义函
数据库实用技术
触发器
❖ 10.2.2 创建触发器
第十章 存储过程、触发器、自定义函数
1.DML触发器
INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra
result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
Schema_Name>.<Trigger_Name, sysname,
Trigger_Name>
ON <Schema_Name, sysname, Schema_Name>
<Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, ,
DDL触发器:
• 在服务器或数据库中发生数据定义(如:CREATE、ALTER、 DROP)事件时自动执行。该类触发器可用于执行一些数据库 管理任务。
登录触发器:
• 在与SQL Server实例建立用户会话时自动执行,主要用来审核 和控制服务器会话。为响应 LOGON 事件而激发存储过程。
第十章存储过程触发器及自定义函
DML触发器在用户对表中的数据进行插入(INSERT)、 修改(UPDATE)和删除(DELETE)时自动运行。
使用触发器模板创建触发器(略):
• 在展开SQL Server实例中,依次展开“数据 库”→“BillingSys”→“表”,继续展开要创建触发 器的具体表节点,选择“触发器”,右击选择“新建触 发器”命令,打开“查询编辑器”,在“查询编辑器” 中出现触发器的编程模板。
END
GO
第十章存储过程触发器及自定义函
数据库实用技术
触发器
第十章 存储过程、触发器、自定义函数
使用CREATE TRIGGER创建 DML触发器:
• 语法格式如下:
CREATE TRIGGER <触发器名>
ON <表名|视图名>
[WITH ENCRYPTION]
FOR|AFTER|INSTEAD OF --触发器的类型
触发器通常用于强制业务规则
触发器是一种高级约束,可以定义比用CHECK 约束更为复杂 的约束
可执行复杂的SQL语句(if/while/case)
可引用其它表中的列
第十章存储过程触发器及自定义函
数据库实用技术
触发器的优点
(1)触发器自动执行; (2)可以调用存储过程; (3)可以强化数据条件约束;常用来实现复杂的数据完
deleted 表
临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作
第十章存储过程触发器及自定义函
数据库实用技术
inserted 和deleted 表2-2
修改操作 增加(INSERT)记录
inserted表 存放新增的记录
数据库实用技术 SQL Server 2008
第十章 存储过程、触发器 和自定义函数
第十章存储过程触发器及自定义函
数据库实用技术
第十章 存储过程、触发器、自定义函数
1
存储过程
2
触发器
3
用户自定义函数
4
实训:T-SQL编程的高级应用
第十章存储过程触发器及自定义函
数据库实用技术
为什么需要触发器
为什么需要触发器(TRIGGER)呢?典型的应用就是银行的 取款机系统