Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 插入到。。选择事务性语句?_Sql_Sql Server_Tsql_Transactions - Fatal编程技术网

Sql 插入到。。选择事务性语句?

Sql 插入到。。选择事务性语句?,sql,sql-server,tsql,transactions,Sql,Sql Server,Tsql,Transactions,我是否需要使用事务为以下插入过程提供全部或非命题 INSERT INTO table1 ( column1 , column2) SELECT col1, col2 FROM table2 表2中的平均行数应为150左右,目标数据库为ms sql server 2008 r2。不,不需要。默认情况下,事务中已经存在一条SQL语句,因此无法部分插入结果,也无法同时由另一个事务调节结果。涉及两个表的事实并不会改变使用单个SQL语句的事实。因为不需要简单的插入。 默认情况下,sqlser

我是否需要使用事务为以下插入过程提供全部或非命题

INSERT INTO table1 ( column1 , column2)
SELECT  col1, col2
FROM    table2  

表2中的平均行数应为150左右,目标数据库为ms sql server 2008 r2。

不,不需要。默认情况下,事务中已经存在一条SQL语句,因此无法部分插入结果,也无法同时由另一个事务调节结果。涉及两个表的事实并不会改变使用单个SQL语句的事实。

因为不需要简单的插入。 默认情况下,sqlserver会管理这件事,并在最后提交您所做的一切。

如果您明确希望在执行insert/update的多条语句时,或者希望在单个工作单元中插入父/子语句时,可以将事务用作

tran
declare @parentId int =0;
insert statement ---parent

set @parentId= @@identity

insert statement --child entry
values ( @parentId,...)

If @@ERROR  > 0 then
ROLLBACK
else 
COMMIT

或者也可以在sqlserver端使用try-catch块作为c#


在没有明确事务的情况下,每个语句在其自己的事务中有效。微软称之为自动提交--