背景
我自己在写一个更新的操作,无论是调用封装好的数据库操作类还是自己写SQL,在代码里执行始终报错,但是更新的sql放到放到navicat中运行确不报错。 代码中错误如下:
Batch update returned unexpected row count from update; actual row count: 3;
翻译过来的意思就是,期待返回受影响的行数是1,实际返回了3;
解决
首先肯定自己的sql没有写错,然后百度错误,多方查找测试找到了原因,是Nhibernate与触发器的冲突导致,原因不细究了。解决方式如下
BEGIN
SET NOCOUNT ON
************** ----->具体的触发器语句 不累述了
SET NOCOUNT OFF
END
在触发器的开始和结束语句上加上这两句代码,SET NOCOUNT ON和 SET NOCOUNT OFF 忽略受影响的行数即可。
至于为什么在navicat中运行sql没有报错,我发现他根本没有触发触发器,所以没有报错。