1 / 34
文档名称:

sqlserver_sql触发器的使用及语法.doc

格式:doc   大小:25KB   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

sqlserver_sql触发器的使用及语法.doc

上传人:wz_198614 2017/5/28 文件大小:25 KB

下载得到文件列表

sqlserver_sql触发器的使用及语法.doc

文档介绍

文档介绍:sqlserver_SQL 触发器的使用及语法定义: 何为触发器?在 SQL Server 里面也就是对某一个表的一定的操作, 触发某种条件, 从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于 Insert , Update , Delete 事件。我 Create StudentID ....) Create Table BorrowRecord( -- 学生借书记录表 BorrowRecord int StudentID int identity(1,1) , --流水号学号, --Table int Student( --primary key, --学学生表号为什么要使用触发器?比如,这么两个表: BorrowDate datetime, -- 借出时间 ReturnDAte Datetime, -- 归还时间...) 用书等这时候可以用到触发器。对于 Create 创建 Trigger 触发 truStudent 器 On Student --在 Student 表中 for Update -- 为什么事件触发 As --if begin Update Set BorrowRecord StudentID= 事件触发后所要做的事情 Update(StudentID) 1 ,创建一个 Update 触发器: 到记录的表等功的能学有号: );。 1. 如果我更改了学生的学号, 我希望他的借书记录仍然与这个学生相关( 也就是同时更改借 2. 如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 From BorrowRecord br, Deleted d ,Inserted i --Deleted 和 InsertedWhere end 理解触发器里面的两个临时的表: Deleted , Inserted 。注意 Deleted 与 Inserted 分别表示触发事件的表“旧的一条记录”和“新的一条记录”。一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: 虚拟表 Inserted 虚拟表 Deleted 在录修录删一个 Update 的过程可以看作为:生成新的记录到 Inserted 表,复制旧的记录到 Deleted 对 On for As Delete From Where 从这两个例子我们可以看到了触发器的关键: 个临时的表; B. 触发机制。 SQL 触发器实例 2 USE GO Master BorrowRecord br, BorrowRecord Delted d = 于2,创建一个 Delete 触发器 Create trigger trdStudent Student Delete 表,然后删除 Student 记录并写入新纪录。表改记时除录新增时存放存存用放来更不放不更新存新存新前增储的的储的记新记记录记录记时临时表 = 录存放被删除的记录 IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE =’U’ AND NAME DROP GO IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE =’U’ AND NAME DROP GO -- 业务规则: 销售金额= 销售数量* 销售单价业务规则。 CREATE ( 卷购销销销) GO -- 业务规则: 库存金额= 库存数量* 库存单价业务规则。 CREATE ( 卷库库库) GO --创建触发器,示例1烟品存存存牌 VARCHAR(40) 数单金量价额 PRIMARY KEY INT MONEY MONEY NOT NULL, NULL, NULL, NULL TABLE 卷烟库存表烟品货售售售牌 VARCHAR(40) 商数单金量价额 PRIMARY KEY NOT NULL, NULL, NULL, NULL, NULL TABLE 卷烟销售表= TABLE ’卷卷烟烟销销售表售’)表= TABLE ’卷卷烟烟库库存表存’)表 VARCHAR(40) INT MONEY MONEY IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE =’ TR’ AND NAME DROP GO CREATE ON FOR AS --BEGIN --强制执行卷存金额=下列语烟库存数句,库量*保证业存库存单