sql - INSERT SELECT 语句和回滚 SQL

标签 sql sql-server

我正在使用 MS SQL Server 2008 创建一个使用 INSERT SELECT 语句的查询:

插入表1(列1,列2)从表2中选择列1,列2

现在该查询的执行是在事务内:

伪代码:

try  
{  
    begin transaction;  
    query;  
    commit;  
}  
catch
{
rollback; 
}

如果TABLE2有大约40m行,在对TABLE1进行插入时,如果INSERT中间出现错误,INSERT SELECT语句会自行回滚还是我需要使用事务保持数据完整性?

有必要使用事务吗?或者 SQL SERVER 本身对这种类型的句子使用事务。

最佳答案

单个 SQL 命令是原子的。它将完成或回滚。

如果完成,包装该命令的事务可以将其回滚。如果它在事务之外,则在完成时提交。

关于sql - INSERT SELECT 语句和回滚 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048959/

相关文章:

javascript - 并行运行 Express 服务和 Angular 6 应用程序

php - 根据是否已选中复选框,使用OR语句创建SQL查询

mysql - 从列中选择最大值并从另一列中选择相应的值

mysql - 从 MySql 中的每个类别中选择随机 N 条记录(不是顶部)

sql - 递归CTE结果是无限的

mysql - 在 SSIS 中使用 ReplaceNULL 函数时抛出异常

c# - 注册后将用户详细信息输入数据库

mysql - SQL SELECT COUNT GROUP BY - 错误

sql - 查找数字字符串中的第一个非零值

sql-server - 我们可以在 Azure SQL 池中创建包含自动增量列的表吗?