对于某些 SQL 查询,我知道必须受 UPDATE、DELETE 或 INSERT 语句影响的预期行数。它可以是一个数字,例如 1,也可以是一个范围,例如 0-1 或 1-2 等。
什么是最好的方式来强制这是受影响的行数,否则会抛出异常?
此外,我能否将受 UPDATE/DELETE/INSERT 影响的行数限制为 1 行,否则会出现异常?
谢谢
最佳答案
您可以在插入、更新和删除中使用 TOP 来强制执行受影响的行数。这不会引发异常。
declare @T table (id int)
insert top(1) into @T values
(1),
(2),
(3)
如果你想要异常(exception),你可以在交易中使用@@ROWCOUNT
。
declare @Min int = 2
declare @Max int = 3
begin transaction
insert into Table1 values
(1),
(2),
(3),
(4)
if not @@rowcount between @Min and @Max
begin
rollback
-- Throw exception here, RAISERROR()
end
else
begin
commit
end
关于c# - 如何在 SQL Server 或 ASP.NET C# 中强制执行一定数量或范围的受影响行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027527/