| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 939 人关注过本帖
标题:[求助]比触发器更具有挑战性的问题
只看楼主 加入收藏
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
结帖率:40%
收藏
 问题点数:0 回复次数:10 
[求助]比触发器更具有挑战性的问题
我在开发一个图书馆管理系统,遇到了一个问题:当我修改某一个表中的指定字段时才触发相应的事件(但是当修改其他字段的时候,却不触发这个事件)这个问题,该怎么处理啊,呵呵
<1>通过触发器可以吗,如果行该怎么处理
触发器建立的一般代码如下:CREATE TRIGGER [TRIGGER NAME] ON [dbo].[BS1]
FOR INSERT, UPDATE, DELETE /*(触发的条件*/
AS
Begin
/*所要触发的事件的代码*/
End
<2>如果不行,可以用其他的方法实现吗?比如说什么事件,任务调度?呵呵
搜索更多相关主题的帖子: 触发器 挑战性 
2006-12-27 11:21
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
收藏
得分:0 
对表建触发器,在触发器里可以对指定列是否更改做判断,如果更改就执行你的操作,指定列如果没更改就直接跳出程序块.

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-27 11:28
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 
哈哈,谢谢,可以具体一点吗?

大家一起努力,共同打造未来!!
2006-12-27 11:30
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 

写点代码吧,万分感谢,呵呵


大家一起努力,共同打造未来!!
2006-12-27 11:31
lengxie
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-27
收藏
得分:0 
可以使用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
2006-12-27 13:30
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 
呵呵,谢谢!又学到新东西了,呵呵

大家一起努力,共同打造未来!!
2006-12-27 13:32
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
以前还不知道有这功能,谢了

26403021 sql群 博客 blog./user15/81152/index.shtml
2006-12-27 16:50
李彬
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-10-13
收藏
得分:0 

照楼上所说的使用列级触发器就可以了!


命運\無法改變,可以改變的是我們對命運\的態度!
2006-12-28 12:55
ninggang
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:637
专家分:0
注 册:2006-11-1
收藏
得分:0 
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
上面的这段代码有个If UpDate (EmployeeID),这个就是对某个字段进行判断,可否理解为列级触发器,如果没有这一段,就是对整张表而言了吧,理解是否正确,呵呵

大家一起努力,共同打造未来!!
2006-12-28 16:12
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
要注意的是,不仅仅是更新特定字段,当发生插入操作的时候也会被视为满足触发条件

2006-12-30 07:44
快速回复:[求助]比触发器更具有挑战性的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049144 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved