能否在一条SQL里完成更新和取数据两个事情?
想在一条语句里完成对一个值的更新和获取,比如先加1再SELECT出来,怎么写?
[解决办法]
一条语句不可能 ,但可以放一个事务里面
[解决办法]
DECLARE @T TABLE (COL1 INT)INSERT INTO @TSELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3UPDATE T1 SET COL1=COL1+1OUTPUT DELETED.COL1 AS COL1_OLD,INSERTED.COL1 AS COL1_NEWFROM @T T1WHERE COL1<3/*COL1_OLD COL1_NEW----------- -----------1 22 3*/
[解决办法]
create table tb( id int,name varchar(10))insert into tbselect 1,'aa'declare @t table(name1 varchar(10),name2 varchar(10))update tbset name='bb'output inserted.name,deleted.name into @twhere id=1select * from @t/*------name1 name2