求update这条记录的被更新的这个字段的值在存储过程里定义变量,update a set a.column = @@@这个变量不就是这个字段的值吗?

解决方案 »

  1.   

    要取到值一般要用触发器的,
    create trigger trg_update_table 
    on table for update 
    as
    if update(data_field)
       select data_field from inserted
      

  2.   

    在存储过程里有办法取到update这条记录的被更新的这个字段的值吗? 
    create procedure p_getdata
    @data varchar(50) output,
    @Name varchar(50),
    @id int 
    as
    update A set Name=@Name where id=@id
    select @data=Name from A where id=@id
    go
    declare @data varchar(50) 
    p_getdata @data output,'gggg',3
    select @data
      

  3.   

    存储过程能取得trigger返回的值吗
      

  4.   

    chocolate() ( ) 信誉:100  2005-04-29 21:00:00  得分: 0  
     
     
       存储过程能取得trigger返回的值吗--沒試過
    ---不過用觸發器可以把你修改得數值存在另外一個表,再通過這個表給存儲過程接受
      
     
      

  5.   

    触发器,inserted表保存更新后的值,deleted表保存更新前的值.
    但这两个表均是逻辑表(虚拟表),只在触发器中有效.所以你可以在触发器中调用存储过程,把值传递给存储过程.如果你要在存储过程中获取,那通过什么来判断你调用存储过程的时候就一定触发了触发器呢?(sql的处理不是以毫秒计的,不能说你修改了记录后马上调用存储过程,存储过程就应该获取你更新的触发器中的内容,在这两个处理之间,sql会根据处理情况,可能插入其他处理).如果你的存储过程只是获得最新所有未处理过的触发器更新情况,可以建立一个触发器,把inserted和deleted逻辑表写入你的辅助处理表,存储过程读取辅助表进行处理,处理完成后,清理已经处理的数据.