找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 3121|回复: 2

[数据库知识] Sql Server中的触发器

[复制链接]
发表于 2009-6-7 16:20:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
在Sql Server触发器中判断操作是Insert还是Update还是DeleteDECLARE
@IsInsert
bit,
   
@IsUpdate
bit,
   
@IsDelete
bit
IF
EXISTS(SELECT
1
FROM inserted) AND
NOT
EXISTS(SELECT
1
FROM deleted)
   
SET
@IsInsert
=
1
ELSE
SET
@IsInsert
=
0
IF
EXISTS(SELECT
1
FROM inserted) AND
EXISTS(SELECT
1
FROM deleted)
   
SET
@IsUpdate
=
1
ELSE
SET
@IsUpdate
=
0
IF
NOT
EXISTS(SELECT
1
FROM inserted) AND
EXISTS(SELECT
1
FROM deleted)
   
SET
@IsDelete
=
1
ELSE
SET
@IsDelete
=
0
create
trigger    Update_Del   on
Table
for
update,delete
as
if
not
exists(select
1
from    inserted)  
  
begin
/*inserted表无记录,是删除*/
end
else
begin
/*是更新*/
end
go

SQL server 2000中UPDATE触发器的工作过程  可将UPDATE语句看成两步操作:即捕获数据前像(before image)的DELETE语句,和捕获数据后像(after image)的INSERT语句。当在定义有触发器的表上执行UPDATE语句时,原始行(前像)被移入到deleted表,更新行(后像)被移入到inserted表。
  触发器检查deleted表和inserted表以及被更新的表,来确定是否更新了多行以及如何执行触发器动作。
  可以使用IF UPDATE语句定义一个监视指定列的数据更新的触发器。这样,就可以让触发器容易的隔离出特定列的活动。当它检测到指定列已经更新时,触发器就会进一步执行适当的动作,例如发出错误信息指出该列不能更新,或者根据新的更新的列值执行一系列的动作语句。
  
语法

IF
UPDATE (<column_name>)
例1
本例阻止用户修改Employees表中的EmployeeID列。
USE Northwind
GO
CREATE
TRIGGER Employee_Update
ON Employees
FOR
UPDATE
AS
IF
UPDATE (EmployeeID)
BEGIN
RAISERROR ('Transaction cannot be processed.\
***** Employee ID number cannot be modified.'
, 10, 1)
ROLLBACK
TRANSACTION
END
发表于 2013-7-24 10:33:54 | 显示全部楼层
xiandingqilaizaikan~
回复 点赞 拍砖

使用道具 举报

发表于 2013-12-15 13:07:35 | 显示全部楼层
楼主你这个有什么功能,能用在哪啊
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-5-15 05:20 , Processed in 0.022481 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表