Create TRIGGER trig_computeSum
ON dbo.Salary
FOR INSERT, UPDATE
AS
--eg. check if instead of column 1-6 are updated
IF (COLUMNS_UPDATED() & 63) = 0
BEGIN
Update Salary set Salary.[Sum]=ins.[wage]+ins.[Item003]
From Salary,Inserted ins
Where salary.UserID=Ins.UserID and Salary.[Month] = Ins.[Month]
END
ON dbo.Salary
FOR INSERT, UPDATE
AS
--eg. check if instead of column 1-6 are updated
IF (COLUMNS_UPDATED() & 63) = 0
BEGIN
Update Salary set Salary.[Sum]=ins.[wage]+ins.[Item003]
From Salary,Inserted ins
Where salary.UserID=Ins.UserID and Salary.[Month] = Ins.[Month]
END
解决方案 »
- 求sql function
- 怎么给用户赋予视图查询权限
- 创建触发器的问题
- 我用VB+MSDE2000练习编写了一个很简单的服务器端和客户端程序,我机器的ip为:192.168.0.101,我将服务器端放在192.168.0.102这台机器上并让数据库管理系统运行起来,我能够成功地连接上服务器端的数据库,也能够读写其数据库。但同样
- 当有新数据插入时更新A表5列为@.触发管理器应该怎么编写?不会where后面的.50分.
- 我用的一个系统保存不了怎么回事
- 生日我用smalldatetime,结果在ASP.NET变成1983-2-12 0:00:00,我要显示的是1983-2-12 ,怎么办?
- 数据库事务复制的问题,解决就给分
- 可不可以将WORD文档存SQL SERVER 的image类型的字段?
- 强烈求教数据库问题
- ***********ISQL应用的问题,高手请进!*************
- 请问大力:如何使用C#或者VB启动和关闭一个SQL服务。
我第一次写,就是你的形式,可是我想动态的调整求和的列,这样就不行了!
ON dbo.Salary
FOR INSERT, UPDATE
AS
--eg. check if instead of column 1-6 are updated
IF (COLUMNS_UPDATED() & 63) = 0
BEGIN
select * into #a from Inserted
Declare @str varchar(2000)
set @str='ins.[wage]+ins.[Item003]'
exec('Update Salary set Salary.[Sum]='+@str+
'From Salary,#a ins
Where salary.UserID=Ins.UserID and Salary.[Month] = Ins.[Month]')
END
非常感谢!已成功实现!
不过我又遇到了新的问题,就是本来我的(COLUMNS_UPDATED() & 63) = 0,这个条件工作挺好的,但在我向Salary表中,添加了新列后(在最右边添加的,保证超过第6列),我发现这个条件出问题了,就是好像没有触发触发器,当我去掉这个条件,触发器又能触发了!难道是我的条件有问题吗?我的条件是要,除了前6列都触发触发器。请指教!