受影响的Insert语句行总是1吗?

时间:2015-11-06 22:18:15

标签: sql-server database

受影响的行,我的意思是语句成功运行,即。没有语法错误或重复的主键等

检查ExecuteNonQuery()的返回值是否没有意义?

SqlCommand cmd= new SqlCommand("INSERT INTO.. ", connection);
if(cmd.ExecuteNonQuery()!=1)
  throw new Exception();

3 个答案:

答案 0 :(得分:2)

来自MSDN

  

对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。

所以不,数字可以不等于1,特别是如果用语句插入多行。

答案 1 :(得分:0)

没有

create table #foo (
  id int primary key,
  name text
);

insert into #foo values
(1,'a'),
(2,'b');

(2行(s)受影响)

答案 2 :(得分:0)

在Insert语句中受影响行的数量取决于插入表中的值。 如果输入两行的值,则会影响两行。