|
分類:[C#]
皆様は伝票の更新時(登録済みの伝票を呼び出して、修正後再登録)の処理はどのようになさってるのでしょうか?
例えば、各行に修正フラグを設定し、修正した行のみをUpdate文で処理する。
もしくは、呼び出した伝票番号を先ず全削除し、新たに修正後の伝票をInsert文で全て処理する。
私は後者のほうが単純だと思い以下のように処理してみました。
using( var _conn = new FbConnection(sConnStr) )
{
_conn.Open();
using( FbTransaction _tran = _conn.BeginTransaction() )
{
using( FbCommand _cmd = _conn.CreateCommand() )
{
_cmd.Transaction = _tran;
// 削除(Delete文の実行)
_cmd.CommandText = sDelSQL;
_cmd.ExecuteNonQuery();
// 登録(リストに登録した各行のInsert文を実行)
foreach( var sSQL in lstSQL)
{
_cmd.CommandText = sSQL;
_cmd.ExecuteNonQuery();
}
}
_tran.Commit();
}
_conn.Close();
こんな感じで実行すると
violation of PRIMARY or UNIQUE KEY constraint "INTEG_365" on table "T_TABEL"
エラーになります。
トランザクション内でのDelete文とInsert文はだめなのでしょうか?
他によい手段があるのでしょうか?
どうぞよろしくおねがいします。
(visualstudio2012,win8pro,.NetFramework4.5)
|