есть ли способ вставить значения в несколько таблиц в базе данных SQL Server 2008? - PullRequest
1 голос
/ 03 апреля 2012

Я просто хотел узнать, есть ли способ вставить значения в несколько таблиц в базе данных 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"); 

Но будут ли значения вставлены в "tb1", даже если часть "Вставить в tb2 ..." получит ошибку? если да, то это не то, что я хотел. я хотел это, значения не должны быть вставлены в tb1, если часть tb2 получает ошибку.

пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Вы должны заключить код в транзакцию:

  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();
      }
 }
0 голосов
/ 03 апреля 2012

Использование транзакций

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

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

        sqlTrans.Commit();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...