- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
sqlserverSQL触发器的使用及语法
定义:何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。我为什么要使用触发器?比如,这么两个表:Create Table Student(??????????????--学生表StudentID int primary key,???????--学号....)Create Table BorrowRecord(???????????????--学生借书记录表BorrowRecord???int identity(1,1),???????--流水号??StudentID??????int ,????????????????????--学号BorrowDate?????datetime,????????????????--借出时间ReturnDAte?????Datetime,????????????????--归还时间...)用到的功能有:1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。等等。这时候可以用到触发器。对于1,创建一个Update触发器:Create Trigger truStudentOn Student?????????????????????????--在Student表中创建触发器for Update??????????????????????????--为什么事件触发As????????????????????????????????????????--事件触发后所要做的事情if Update(StudentID)???????????beginUpdate BorrowRecord?Set StudentID=i.StudentIDFrom BorrowRecord br , Deleted???d ,Inserted i??????--Deleted和Inserted临时表Where br.StudentID=d.StudentIDend???????理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:虚拟表Inserted?????????????????????虚拟表Deleted在表记录新增时?????存放新增的记录?????????????????????????不存储记录修改时???????????存放用来更新的新记录???????????????????存放更新前的记录删除时???????????不存储记录?????????????????????????????存放被删除的记录一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。对于2,创建一个Delete触发器Create trigger trdStudentOn Studentfor DeleteAsDelete BorrowRecordFrom BorrowRecord br , Delted dWhere br.StudentID=d.StudentID从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。SQL触发器实例2USE MasterGOIF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = ’U’ AND NAME = ’卷烟库存表’)DROP TABLE 卷烟库存表GOIF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = ’U’ AND NAME = ’卷烟销售表’)DROP TABLE 卷烟销售表GO--业务规则:销售金额 = 销售数量 * 销售单价业务规则。CREATE TABLE 卷烟销售表(卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL,购货商 VARCHAR(40) NULL,销售数量 INT NULL,销售单价 MONEY NULL,销售金额 MONEY NULL)GO--业务规则:库存金额 = 库存数量 * 库存单价业务规则。CREATE TABLE 卷烟库存表(卷烟品牌 VARCHAR(40) PRIMARY KEY NOT NULL,库存数量 INT NULL,库存单价 MONEY NULL,库存金额 MONE
您可能关注的文档
最近下载
- 微波技术(北航)中国大学MOOC慕课 章节测验 客观题答案.docx
- 九洲集团民品科技发展规划(2010-2015).pdf
- JJF(机械) 1032-2019 轴承跳动测量仪校准规范.docx VIP
- (人教PEP版2024)英语六年级上册Unit5 大单元项目化教学设计.docx
- 人教版(2024)美术一年级上册《看我七十二变》教学设计.docx
- 初中常用英语单词分类表word版本.doc VIP
- 房地产 -霸州市贾庄旧城改造永正·星城二期项目修建性详细规划设计方案.docx
- 红色经典话剧剧本.doc
- 国开电大 《JavaScript程序设计》(版本2) 形考实训二:显示数据列表.pdf VIP
- 电器与照明系统课件.pptx VIP
文档评论(0)