比如说我在前台执行了
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执行上面的操作后,就将他更新的记录显示给他看.
请教请教
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执行上面的操作后,就将他更新的记录显示给他看.
请教请教
把这个语句放在触发器里..
用 inserted表....
可能我没有说清我的情况,所以大家说出了不同的答案.
问题解决了,说下我的实现办法.我最后是先select出所有记录,然后按id一条一条更新,
前端检查是否更新成功.成功就放入前端的dataset.
一直循环到自己要的记录数量,退出循环.
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
*/
不过我想了解下,
因为我这个是个web程序.同一个dbuser可能同时有几个连接连在上面操作.
这个返回的可以区分开吗?
我对后台的执行机制不是太了解.如果不会乱的话,你这个方法应该很好用的.
你把更新的记录插入到临时表当中,然后从这个临时表返回数据给客户,如下:
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
使用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