如果有任何技术可以将值插入sql Server 2008数据库中的多个表中?

时间:2012-04-02 23:20:44

标签: sql-server sql-server-2008

我只是想知道,如果有任何技术可以将值插入sql Server 2008数据库中的多个表中吗?

我有以下

    cmd.CommandText = "Insert into tb1 (col1, col2, col3) values (@col1, @col2, @col3); Insert into tb2 (col1, col2, col3) values (@col11, @col12, @col13);";

    cmd.Parameters.AddWithValue("col1","val1"); 


    cmd.Parameters.AddWithValue("col2", "val2"); 
    cmd.Parameters.AddWithValue("col3", "val3"); 


    cmd.Parameters.AddWithValue("col11","val4"); cmd.Parameters.AddWithValue("col12", "val5"); 
    cmd.Parameters.AddWithValue("col13", "val6"); 

但即使“插入到tb2 ...”部分出现错误,也会将值插入“tb1”? 如果是的话那就不是我想要的了。 我想要的是,如果tb2部分出错,则不应将值插入到tb1中。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

您应该将代码包装到事务中:

  using (SqlConnection conn = new SqlConnection(connectionString))
  {
      conn.Open();

      // Begin the transaction
      tran = cnn.BeginTransaction();

      cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.Transaction = tran;

      try
      {
           //place your current code here with multiple cmd.ExecuteNonQuery

           // Commit the transaction ....
           tran.Commit();
      }
      catch(Exception e)
      {
           tran.Rollback();
      }
 }

答案 1 :(得分:0)

使用交易

using (SqlConnection sqlConn = new SqlConnection(ConnectionString))
{
    sqlConn.Open();

    using (SqlTransaction sqlTrans = sqlConn.BeginTransaction())
    {
        // ... insert 1
        // ... insert 2

        sqlTrans.Commit();
    }
}