加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver創建使用觸發器

发布时间:2020-12-12 13:33:36 所属栏目:MsSql教程 来源:网络整理
导读:一般地,创建触发器的语法如下:? Create Trigger触发器名称? On 表名|视图名??? --指定所创建的触发器与某个已存在的表或视图关联? For {Insert,Delete,Update}? --指定触发器的类型(即插入,删除,更新或它们的任意组合)? As ? SQL语句??? --指定触发器

一般地,创建触发器的语法如下:?
Create Trigger触发器名称?
On 表名|视图名??? --指定所创建的触发器与某个已存在的表或视图关联? For {Insert,Delete,Update}? --指定触发器的类型(即插入,删除,更新或它们的任意组合)?
As
? SQL语句??? --指定触发器的动作

工作原理
?? 对于每个触发器,SQL Server都会自动创建2个临时工作表,即inserted表和deleted表,这2个表作为系统的专用表存放于内存中,其结构与被作用的表相同,且在触发行为结束后自动被删除。
下面分别说明inserted和deleted这二个工作表与客户端发出的Insert,Delete或Update请求的关系。

请求?????? 工作表名称?????????? 工作表内容
Insert???? Inserted???????????? 被插入的行
?????????? Deleted?????????????? /

Delete???? Inserted???????????? /
?????????? Deleted????????????? 被删除的行

Update???? Inserted???????????? 被插入的行
?????????? Deleted????????????? 被删除的行

IF EXISTS (SELECT name
	   FROM   sysobjects
	   WHERE  name = N'triUpdPartsQty'
	   AND 	  type = 'TR')
    DROP TRIGGER  triUpdPartsQty
GO

CREATE TRIGGER triUpdPartsQty
ON  Part_s
FOR  UPDATE
AS

If UPDATE(PS_QTY) OR UPDATE(PS_AVAILABLE)
BEGIN
	update Part_s set UPD_DATE= convert(nvarchar(8),getdate(),112) from Part_s ps
	inner join  Inerted i on ps.P_NO=i.P_NO and ps.S_NO=i.S_NO
END

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读