任何人都知道如何在SQL中再次将rowcount设置为零。
我使用rowcount来获取插入语句中插入的记录数。我必须再次使用rowcount来查找更新的行。所以我想再次将rowcount重置为零。
代码将是这样的:
INSERT INTO Table A ......
INSERT INTO statistics (id,inserted_records ) values (1,@@rowcount)
---一些操作 -
Update Table A ....
Update statistics set updated_records=@@rowcount where id=
答案 0 :(得分:1)
@bibinmatthew @@ ROWCOUNT会在您进行其他交易时自动重置。
我会考虑做的是
declare @rowsAffected int
insert into table A ...
select @rowsAffected = @@ROWCOUNT
insert into table statistics (id, inserted_records) values (iID, @rowsAffected)
declare @rowsAffected int
update table A ...
select @rowsAffected = @@ROWCOUNT
update table statistics set updated_records = @rowsAffected where id = iID
这样,您无需直接处理@@ ROWCOUNT变量。我已经创建了@rowsAffected两次因为我假设你在不同的存储过程中有插入和更新脚本</ p>
答案 1 :(得分:0)
select @@rowcount
仅返回最近语句中的行计数。 无需重置。。执行另一个语句将自动重置它。
如果由于某些奇怪的原因,您希望使@@rowcount
返回0,则执行将返回0行的查询。
select 1 where 2=3
你可以证明这一点。
declare @t table (i int)
declare @stats table(rc int)
insert @t values (1),(2),(3)
-- rowcount is 3
insert @stats values (@@rowcount)
-- rowcount is 1
update @t set i=5 where i=4
select @@ROWCOUNT -- rowcount will be 0
答案 2 :(得分:0)
有关rowcount的信息在这里:
http://technet.microsoft.com/en-us//library/ms187316.aspx
诸如USE,SET,DEALLOCATE CURSOR,CLOSE CURSOR之类的陈述, BEGIN TRANSACTION或COMMIT TRANSACTION将ROWCOUNT值重置为0
所以也许你可以将这些陈述放入一个交易中,这样它们就可以更好地相互隔离。
您可以随时发送不更新任何内容的请求,例如UPDATE mytable SET x=1 WHERE 0=1;