比如说我在前台执行了
UPDATE authors
SET state = 'ZZ' 
FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname where state<>'ZZ') AS t1
WHERE authors.au_id = t1.au_id网络上可能同时有多个用户调用这个前端程序.我想在前端实现,当用户A执行上面的操作后,就将他更新的记录显示给他看.
请教请教

解决方案 »

  1.   


    把这个语句放在触发器里..
    用 inserted表....
      

  2.   

    用after触发器,从inserted表中获取更新记录信息.
      

  3.   

    谢谢楼上各位.
    可能我没有说清我的情况,所以大家说出了不同的答案.
    问题解决了,说下我的实现办法.我最后是先select出所有记录,然后按id一条一条更新,
    前端检查是否更新成功.成功就放入前端的dataset.
    一直循环到自己要的记录数量,退出循环.
      

  4.   

    create table tb1(id int,col1 varchar(10))
    insert into tb1 select 1,'abc'
    union all select 2,'ehd'
    union all select 3,'veui'
    union all select 4,'ckew'
    go
    create trigger whoupdated
    on tb1
    After update
    As
    select * from inserted
    go
    --执行更新:
    update tb1 set tb1.col1=tb1.col1+'kkk' from (select top 2 * from tb1 order by col1)t1 where tb1.id=t1.id
    go
    drop table tb1
    /*
    id          col1
    ----------- ----------
    4           ckewkkk
    1           abckkk
    */
      

  5.   

    楼上的方法不错.
    不过我想了解下,
    因为我这个是个web程序.同一个dbuser可能同时有几个连接连在上面操作.
    这个返回的可以区分开吗?
    我对后台的执行机制不是太了解.如果不会乱的话,你这个方法应该很好用的.
      

  6.   


    你把更新的记录插入到临时表当中,然后从这个临时表返回数据给客户,如下:
    select * into #temp FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname where state <>'ZZ') AS t1 
    WHERE authors.au_id = t1.au_id 
      

  7.   


    使用OUTPUT返回已经更新的数据UPDATE authors 
    SET state = 'ZZ' 
    output inserted.*
    FROM (SELECT TOP 10 * FROM authors where state <>'ZZ' ORDER BY au_lname ) AS t1 
    WHERE authors.au_id = t1.au_id