日期:2014-05-18  浏览次数:20581 次

触发气问题!在update 指定字段时修改时间!(sqlserver2000)
sqlserver2000下
在update指定字段时   更改curr_time=getdate()
A   表中curr_time   默认是为空的。 <null>
我想让他在update   void_date   时给curr_time   设定为getdate()
触发器如下:
CREATE   TRIGGER   trigger_A   ON   [dbo].[A]  
FOR     UPDATE
AS
declare       @id       char(10)    
if   UPDATE(VOID_DATE)
begin
    select   @id   =   A_NO   from   inserted    
      update   A   set   curr_time=getdate()
      from   A
      where   A_NO   =   @id
end

问题:
当我update一条数据的时候curr_time   是等于   getdate()
但是当我   update   A   set   void_date   =   '1999-9-9 '   更改所有
后只做用到一条记录上。

分析:
应该是在         select   @id   =   A_NO   from   inserted     这里
@id的问题。
有谁能解决,   或有其他方法。

------解决方案--------------------
CREATE TRIGGER trigger_A ON [dbo].[A]
FOR UPDATE
AS
declare @id char(10)
if UPDATE(VOID_DATE)
begin
-- select @id = A_NO from inserted
update A set curr_time=getdate()
from A,inserted i
where A.A_NO = i.A_NO
end