如何执行受影响的行的SQL Server或ASP.NET C#

问题描述:

因为我知道行的预期数量必须由更新的影响,删除或插入语句一些SQL查询一定次数或范围。这可能是一个数字,如1或一个范围,如0-1或1-2等如何执行受影响的行的SQL Server或ASP.NET C#

什么是强制执行,这是受影响的行数,否则抛出一个异常的最好方法?

而且,我可以限制影响了UPDATE/DELETE/INSERT说1行,否则会得到一个异常的行数?

感谢

对于UPDATE,INSERT和DELETE语句,返回的ExecuteNonQuery受该命令影响的行数。

我建议你在事务中包装调用,并且如果结果不如预期的那样回滚事务并抛出异常。

您还可以使用@@ROWCOUNT做同样的查询中。

使用@@ROWCOUNT直接您的声明后。如果不等于你想要的,使用RAISERROR

一个小小的警告,但是,RAISERROR都有一个严重的参数。使用11和19之间的数字。低于11会被视为警告。高于19只能由系统管理员完成,是一个致命错误并终止您的连接。

您可以插入,更新使用TOP和删除强制受影响的行数。这不会引发异常。

declare @T table (id int) 

insert top(1) into @T values 
(1), 
(2), 
(3) 

如果您想要例外,您可以在事务中使用@@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 

我想在查询级别,使用的是要么@@的程序或类似的内ROWCOUNT之外,但你需要使用事务。

如果你想在数据库中稍微低一点(因为上面的技术只能保护设计使用这样的框架的查询),那么你可以使用表格上的触发器并计算INSERTED或DELETED伪 - 表并使用RAISERRROR来提出适当的错误。