Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server &引用;“开始交易”;多次删除/插入中的用法_Sql Server_Transactions - Fatal编程技术网

Sql server &引用;“开始交易”;多次删除/插入中的用法

Sql server &引用;“开始交易”;多次删除/插入中的用法,sql-server,transactions,Sql Server,Transactions,我创建了一个具有大量删除/插入操作的临时程序。 对于数据完整性,如果任何操作出错,我希望回滚所有操作。 以下是伪代码: BEGIN TRY BEGIN TRANSACTION INSERT INTO New_Table VALUES(......) DELETE FROM Old_Table COMMIT END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK END CATCH 这里有性能问题吗?我

我创建了一个具有大量删除/插入操作的临时程序。 对于数据完整性,如果任何操作出错,我希望回滚所有操作。 以下是伪代码:

BEGIN TRY
BEGIN TRANSACTION 
      INSERT INTO New_Table VALUES(......)
      DELETE FROM Old_Table
      COMMIT
END TRY
BEGIN CATCH

IF @@TRANCOUNT > 0
    ROLLBACK
END CATCH

这里有性能问题吗?我将在本节中对插入/删除数据使用此逻辑大约10次。

如果您需要确保数据安全,则使用事务。上面的代码看起来不错。基于上述情况,我认为你不会做得更好。请注意,简单地说,事务将假定一切正常,因此提交几乎与没有事务一样快。只有在执行回滚时,您才真正需要担心性能。如果您想要额外的安全性,您可能还需要启用
设置XACT\u ABORT
。见MSDN: