- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 触发器原理及使用 ;13.1 触发器基本概念;13.1.1 触发器的概念及作用;13.1.1 触发器的概念及作用;13.1.2 触发器的种类;13.2 触发器原理;13.2.1 插入表的功能;13.2.2 删除表的功能;13.2.3 插入视图和删除视图;13.3 触发器的创建和管理 ;13.3.1 创建触发器;1.用对象资源管理器创建触发器
① 启动对象资源管理器,登录到要使用的服务器。
② 在对象资源管理器的左窗格中,展开要创建触发器的数据库文件夹,点击“表”文件夹前面的“+”号,此时在右窗格中显示该数据库的所有表。
③ 选择创建触发器的表,点击要创建触发器的数据表前面的“+”号,右击触发器选项,在出现的下一级子菜单中选择“新建触发器”菜单项。 ;2.用CREATE TRIGGER命令创建触发器;重要生疏选项注释;举例;举例;13.3.2 管理触发器 ;13.3.2 管理触发器;13.3.3 修改、删除触发器;(2)使用Alert trigger,修改触发器的正文
语法格式:
ALTER TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
Sql 语句 [ ...n ]
}
} ;
USE 教学管理
GO
IF EXISTS (SELECT name FROM sysobjects
WHERE name =T_表改变显示 AND type = TR)
DROP TRIGGER T_表改变显示
GO;13.4 使用触发器实现强制业务规则 ;13.4.1 INSERT触发器;BEGIN
DECLARE @已选人数 INT,@限选人数 INT
SELECT @已选人数=已选人数+1, @限选人数=限选人数
FROM 开课表 O,inserted i
WHERE O.开课号=i.开课号
IF (@已选人数 @限选人数)
BEGIN
PRINT 选修人数已满!
ROLLBACK TRANSACTION
END
UPDATE 开课表
SET 已选人数=@已选人数
FROM 开课表 O, inserted i
WHERE O.开课号=i.开课号
END;--验证:
--查看已选人数
SELECT 开课号,限选人数,已选人数 FROM 开课表 WHERE 开课号=020102
--在选课表里增加一条记录。下面用了错误捕捉方法,见例7-2。
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO 选课表VALUES(S060306, 020102,NULL)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH
--再查看已选人数
SELECT 开课号,限选人数,已选人数 FROM 开课表 WHERE 开课号=020102 ;13.4.2 UPDATE触发器 ;BEGIN
DECLARE @old_工号CHAR(6),@new_工号CHAR(6)
SELECT @old_工号=工号
FROM deleted
SELECT @new_工号=i.工号
FROM inserted i
UPDATE 教师表
SET 负责人=@new_工号
WHERE 负责人=@old_工号
END
--此时用到inserted和deleted表,在inserted表中,存放的是执行UPDATE操作的表中被修改的那些记录修改之后的新值,而在delelted表中,存放的是执行UPDATE操作的表中被修改的那些记录修改之前的旧值。;--验证
BEGIN TRAN
--查询教师表
SELECT * FROM 教师表
--修改教师表中的工号,将’T01001’变为’T01003’
UPDATE 教师表
SET 工号=T010
您可能关注的文档
- 09甲状腺癌的颈部淋的巴结清扫原则-复旦大学附属肿瘤医院吴毅教授.ppt
- 09离散数学课件资料的.ppt
- 09第九章 串行通讯嫉陌其接口A.ppt
- 09信息技术选择题的.doc
- 09计算机统考大纲的.pdf
- 09第9章 三相异步电的动机的基本理论.ppt
- 0ch6-7-光学习题课的.ppt
- 1 PC安装广讯通方返抹.doc
- 1 什么是操作系统的.doc
- 1 可靠性的数学基础的.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)