日期:2014-05-18  浏览次数:20582 次

SQL Server中如何判断insert、update等操作是否执行成功?
首先,insert、update、delete语句成功执行后会返回受影响的记录数,根据返回值可以判断SQL语句是否执行成功。但是如果返回的影响记录数在网络的传输过程中丢失,也就是在收不到应答信号时,采取什么方式来判断?
如果在收不到应答信号的情况下,将SQL语句再重复执行一遍,又会导致数据的重复插入或修改,不知道是不是我想复杂了,还请大家指点迷津。。。

------解决方案--------------------
@@ROWCOUNT
返回受上一语句影响的行数。

------解决方案--------------------
LZ的可以返回受影响的记录数,后面的重复执行不会的。sql有事务机制的。
------解决方案--------------------
这涉及到了sql事物吧!
------解决方案--------------------
适当在insert 、update、delete中加入合理的事务。然后使用@@rowcont来返回是很好的操作,尽量不要使用select count(1) from xxx来查找是否变更成功,这样开销很大。同时,建议前端程序也要有一定的回滚机制,不然一旦网络断了,前端就在等待,应用程序也会有阻塞的情况出现的。性能问题不一定就是SQLServer的。
------解决方案--------------------
不知你用的是什么语言,如果执行成功,在连接执行中可以返回sql 语句的执行错误值!如我给你一段我的代码,当是vfp代码,SQLEXEC执行sql语句时,都会有一个返回值,如果是-1,就是出错。但可以触类旁通。
VB code


   * ---------------------------------------------------- \\ gnMyLogHandle为连接文件。
        
   IF SQLEXEC(gnMyLogHandle, "SELECT * from aaa) = -1
            
      = MESSAGEBOX("系统在读取服务器时间时,发生错误,请查找原因!",0x1000,m_message1)
   ENDIF

------解决方案--------------------
说说你用的编程语言,很重要。