情况是这样:我的项目中没有封装的事务处理,现在要将主表(1条记录),从表(n条记录,n>=0)放在1个事务中处理,进行新增、更新、删除,怎么做这个事务,sql语句放在存储过程里。

解决方案 »

  1.   

    BEGIN TRANSACTION
    标记一个显式本地事务的起始点。BEGIN TRANSACTION将 @@TRANCOUNT 加 1。语法
    BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable
        [ WITH MARK [ 'description' ] ] ]参数
    transaction_name是给事务分配的名称。transaction_name 必须遵循标识符规则,但是不允许标识符多于 32 个字符。仅在嵌套的 BEGIN...COMMIT 或 BEGIN...ROLLBACK 语句的最外语句对上使用事务名。@tran_name_variable是用户定义的、含有有效事务名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。WITH MARK ['description']指定在日志中标记事务。Description 是描述该标记的字符串。如果使用了 WITH MARK,则必须指定事务名。WITH MARK 允许将事务日志还原到命名标记
    ROLLBACK TRANSACTION
    将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。语法
    ROLLBACK [ TRAN [ SACTION ]
        [ transaction_name | @tran_name_variable
        | savepoint_name | @savepoint_variable ] ]参数
    transaction_name是给 BEGIN TRANSACTION 上的事务指派的名称。transaction_name 必须符合标识符规则,但只使用事务名称的前 32 个字符。嵌套事务时,transaction_name 必须是来自最远的 BEGIN TRANSACTION 语句的名称。@tran_name_variable是用户定义的、含有有效事务名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。savepoint_name是来自 SAVE TRANSACTION 语句的 savepoint_name。savepoint_name 必须符合标识符规则。当条件回滚只影响事务的一部分时使用 savepoint_name。@savepoint_variable是用户定义的、含有有效保存点名称的变量的名称。必须用 char、varchar、nchar 或 nvarchar 数据类型声明该变量。注释
    写在这里面,不太懂这东西
      

  2.   

    自行解决了,用TransactionScope,具体操作查msdn.