C# SQLServer2008中的事务问题
我正在使用SQLServer2008企业版。使用ADO.Net+C++.NET3.5+ASP.Net作为客户端访问数据库。当我访问SQLServer2008表时,我总是从我的C+ADO.Net代码中调用存储过程 我的问题是,如果我没有任何事务控制,我的意思是从客户端C+ADO.Net代码开始/结束事务,我也没有任何事务控制,我的意思是在sql存储过程代码中开始/结束事务。那么我的问题是,每个Insert/Delete/Update/Select语句都将充当一个事务?对吗?例如,在以下存储过程中,删除/插入/选择将作为3个单一事务处理C# SQLServer2008中的事务问题,c#,tsql,sql-server-2008,ado.net,transactions,C#,Tsql,Sql Server 2008,Ado.net,Transactions,我正在使用SQLServer2008企业版。使用ADO.Net+C++.NET3.5+ASP.Net作为客户端访问数据库。当我访问SQLServer2008表时,我总是从我的C+ADO.Net代码中调用存储过程 我的问题是,如果我没有任何事务控制,我的意思是从客户端C+ADO.Net代码开始/结束事务,我也没有任何事务控制,我的意思是在sql存储过程代码中开始/结束事务。那么我的问题是,每个Insert/Delete/Update/Select语句都将充当一个事务?对吗?例如,在以下存储过程中,
create PROCEDURE [dbo].[FooProc]
(
@Param1 int
,@Param2 int
,@Param3 int
)
AS
DELETE FooTable WHERE Param1 = @Param1
INSERT INTO FooTable
(
Param1
,Param2
,Param3
)
VALUES
(
@Param1
,@Param2
,@Param3
)
DECLARE @ID bigint
SET @ID = ISNULL(@@Identity,-1)
IF @ID > 0
BEGIN
SELECT IdentityStr FROM FooTable WHERE ID = @ID
END
如果不处理事务,则每条语句都是独立的,可能会干扰同时运行存储过程的其他用户。如果不处理事务,则每条语句都是独立的,可能会干扰同时运行存储过程的其他用户 那么我的问题是,每一个 Insert/Delete/Update/Select语句 是否将作为单个事务处理 是的,如果没有显式的事务控制,每个SQL语句将被包装在自己的事务中。单个语句保证作为一个整体执行或作为一个整体失败 单个语句将在当前:normally read committed下运行。因此,它不会从其他语句读取未提交的更改,但可能会遭受不可重复读取或幻象值的影响 那么我的问题是,每一个 Insert/Delete/Update/Select语句 是否将作为单个事务处理 是的,如果没有显式的事务控制,每个SQL语句将被包装在自己的事务中。单个语句保证作为一个整体执行或作为一个整体失败
单个语句将在当前:normally read committed下运行。因此,它不会从其他语句中读取未提交的更改,但可能会遭受不可重复读取或幻象值的影响。谢谢您,Andomar!问题回答了!谢谢你,安多玛!问题回答了!