SQL同時実行違反

このQ&Aのポイント
  • SQL同時実行違反が発生している際の解決方法を教えてください。
  • Main_Tableを表示するために使用しているコードで、SQL同時実行違反が発生しています。
  • 同時実行違反 : UpdateCommandによって処理予定の1レコードのうち0件が処理されました。原因を教えてください。
回答を見る
  • ベストアンサー

SQL同時実行違反

// Main_Tableを表示 this->Main_TableTableAdapter->Fill(this->kakeiboDataSet->Main_Table); // 選択したセルの行番号を取得 int iRow = dataGridView4->CurrentCell->RowIndex; // 要素番号の取得 param1 = this->kakeiboDataSet->Main_Table->Rows[iRow]["要素番号"]->ToString(); // データセットに値をセット this->Sub_TableTableAdapter->Fill(this->kakeiboDataSet->Sub_Table,param1); this->kakeiboDataSet->Sub_Table->Rows[0]["品物"] = 2; this->kakeiboDataSet->Sub_Table->Rows[0]->EndEdit(); this->Sub_TableTableAdapter->Update(this->kakeiboDataSet->Sub_Table); 以上のようなコードで 追加情報: 同時実行違反 : UpdateCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。 のように同時実行違反がでます。原因がわかるかた よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.1

メインテーブルとサブテーブルには、どういうSQLを投げていますか? 例えば、どちらかがビューになっていませんか?

tamukikun
質問者

補足

どちらにも特にSQLを設定していません。 どちらもビューにはなっていないです。

関連するQ&A

  • C#のSQL言語について教えてください。

    windowsフォーム上にデータベースのテーブルを載せて、 書き込むボタンを作り、その書き込み内容を書き込み直後にフォーム上のデータベースのテーブルに反映させたいと思っているのですが反映されません。コードが間違っていますでしょうか? これがソースです。 SqlConnection cn; SqlCommand cmd; cn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDbFilename=E:\開発用\入退室記録システム(接続から読取)\SampleApplicationByCS\Database1.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True"); cmd = new SqlCommand("Select * From Product", cn); cn.Open(); //Table1の学籍番号00000001の行の授業開始の列に1と入力する。 cmd = new SqlCommand("UPDATE Table1 " + "SET 授業開始='1' WHERE 学籍番号=" + response.Comm[ix].TagData, cn); cmd.ExecuteNonQuery(); SqlTransaction st; st = cn.BeginTransaction("Table1"); cmd.Transaction = st; st.Commit(); cn.Close(); コミットはこれでいいのでしょうか? this.table1TableAdapter.Fill(this.database1DataSet.Table1); これを入れてもテーブルが更新されませんでした。

  • エクセルVBAでSQLを打ちたいです

    仕事上自動化ツールを作成したいのですが、どうしてもエクセルでSQLが出来ず困っています。 やりたいこと:ボタンひとつで、エクセルシートにある表の必要な部分を取り出して別のシートに貼り付ける。 SQLでは SELECT xxxxx,data,MIN(time) As times From xxxxx WHERE ●●●="●●●" GROUP BY xxxxx,data; です。 実際に今書いているVBAが途中なのですが、 Option Explicit Sub createInsertSql() Dim newbook As Workbook Dim currentCell As Range '前処理 Dim srcSheet As Worksheet Set srcSheet = ActiveSheet Dim targetRange As Range Set targetRange = srcSheet.UsedRange Dim head As String head = "SERECT " & srcSheet.Name & " (" Dim first As Boolean first = True Dim currentColumnIndex As Integer For currentColumnIndex = 1 To targetRange.Columns.Count If (first) Then first = False Else head = head & "xxxxx,data,MIN(time)" End If Set currentCell = srcSheet.Cells(1, currentColumnIndex) head = head & currentCell.Value Next head = head & ") " '新しいBook作成 Set newbook = Workbooks.Add Dim currentRowIndex As Integer For currentRowIndex = 2 To targetRange.Rows.Count Dim sql As String sql = head & "values (" first = True For currentColumnIndex = 1 To targetRange.Columns.Count If (first) Then first = False Else sql = sql & "," End If Set currentCell = srcSheet.Cells(currentRowIndex, currentColumnIndex) If IsNull(currentCell) Or Trim(currentCell.Value) = "" Then sql = sql & "null" ElseIf IsNumeric(currentCell.Value) Then sql = sql & currentCell.Value Else sql = sql & "'" & currentCell.Value & "'" End If Next sql = sql & ");" newbook.ActiveSheet.Cells(currentRowIndex - 1, 1).Value = sql Next End Sub いろんなサイトを見ていろいろ組み合わせてみたのですが、やはり出来ず。 意味を理解しようとも中々できずです。 恐れ入りますが、答えまではいかなくとも、どのようにしたらいいかのヒントだけでも いただけると嬉しいです。 よろしくお願いします。

  • My SQL の concat文について

    あるテーブルtable01にname列があったとします。 その列に ”様" をつけたいと思い、concat文を使おうと思い、 以下のようにしたのですが、 mysql> Select concat(name,"様") from table01; +-------------------+ | concat(name,"様") | +-------------------+ | ito様 | | sato様 | | aikawa様 | | abe様 | | yamada様 | +-------------------+ 5 rows in set (0.00 sec) 列名もconcat(name,"様")となってしまっていますが、 As nameを使う以外に nameとだけ表示させる方法はありますか?

    • ベストアンサー
    • MySQL
  • Accessで、自動的にテーブルを新規作成をする方法。

    お世話になっております。 access上で、mainテーブルとsubテーブルを作成するとします。mainとsubの関係は1対∞です。 その時に、mainテーブルにレコードが一つ増えるたびに、subテーブルを新規作成するというVBAはありますか。 その際にリレーションシップも組まれるといいです。 そんなVBAがなくとも、違うやり方で解決できないでしょうか。ご回答お願いします。

  • SQLの外部結合について教えて下さい

    いつもお世話になっています。 SQL構文の外部結合が分らなくて困っています。 どうか教えて下さい。 JSPからString Nam = (request.getParameter("param"));で値を受け取ってその値でT_Tableと一致するデータのSQLを実行します。 SELECT * FROM T_Table where ID='"+ Nam +"' order by 日付 desc この結果とT_TableAの「番号」というフィールドと一致する問い合わせのSQLが分りません。自分なりに考えて作りましたがHTMLの部分の表示だけでレコードが表示されないので間違っているのだと思います。 色々調べてみましたが該当のサンプルがなかったので困っています。 教えて下さい!宜しくお願い致します。 【自分で作成してみたSQLです】 テーブルはSQL Serverです。 "SELECT * FROM T_Table where ID='"+ Nam +"' INNER JOIN where ID='"+ Nam +"' ON [T_Table].[番号] = [T_TableA].[番号] order by 日付 desc"

    • ベストアンサー
    • Java
  • ADO.NETのデータベースについて

     こんにちは。いつもお世話になっております。  プログラミングの初心者で、現在VC++でプログラムを作成しています。環境は、OSがWindowsXP、統合環境はVisualStudio2008 Professionalを使用しています.  ADO.NETでデータベースを作成しているのですが、DataSetを介して、任意のフィールドを変更・更新がうまくいきません。プログラムの内容は、保存されているAccessデータから表を読み込み、その表に対して挿入、変更、削除を行い、最後にupdateをしてAccessのデータを更新するというものです。以下、プログラムの一部を抜粋します。拙い説明で申し訳ありません。原因が分かる方、よろしくご教授ください。 m(_)m private: bool LoadAccessFile(String^ path) { // コネクションを作成 OleDbConnection^ cn = gcnew OleDbConnection(); cn->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=" + path; // すべてのデータを読み込む OleDbDataAdapter^ da = gcnew OleDbDataAdapter("select * from 実績テーブル", cn); OleDbDataAdapter^ da2 = gcnew OleDbDataAdapter("select * from クエリ1", cn); OleDbCommandBuilder^ builder = gcnew OleDbCommandBuilder(da); //test OleDbCommand^ selectCommand = cn->CreateCommand(); OleDbCommand^ selectCommand2 = cn->CreateCommand(); OleDbCommand^ insertCommand = cn->CreateCommand(); OleDbCommand^ updateCommand = cn->CreateCommand(); OleDbCommand^ deleteCommand = cn->CreateCommand(); selectCommand->CommandText = "select 通し番号, 日付, 内容, 金額, カテゴリー番号, 銀行口座通し番号 from 実績テーブル where 通し番号=2"; selectCommand2->CommandText = "select 通し番号, 日付, 内容, 金額, カテゴリー名称, 銀行口座口座名称 from クエリ1"; insertCommand->CommandText = "insert into 実績テーブル (通し番号, 日付, 内容, 金額, カテゴリー番号, 銀行口座通し番号) values (@通し番号, @日付, @内容, @金額, @カテゴリー番号, @銀行口座通し番号)";      (中略) // OleDbDataAdapterのスキーマと、SelectCommandで抽出したデータを格納 da->FillSchema(ds, System::Data::SchemaType::Mapped); da->Fill(ds->Tables["Table"]); // "Table"表の2行3列目のデータを変更 ds->Tables->Add("クエリ1"); //test(090223) DataRow^ row = ds->Tables["Table"]->Rows[1]; //Rows[0]の添え字を0以外にするとエラー。「位置1に行がありません」 DataColumn^ column = ds->Tables["Table"]->Columns[2]; row[column] = "本"; // "Table"表の0行目を削除 ds->Tables["Table"]->Rows[0]->Delete(); //Rows[0]の添え字を0以外にするとエラー。「位置1に行がありません」

  • JOINでつなげサブテーブルの複数レコードをまとめ

    現在、下記の【main_table】【sub_table】2つのデータベースを 【SQL】文にて【sample.php】の表示となっています。 【main_table】 +---+---+-----------+ |id|no|todouhuken| +---+---+-----------+ |1|001|北海道  | +---+---+-----------+ |2|002|青森   | +---+---+-----------+ 【sub_table】 +---+---+-----------+ |id|no|shi      | +---+---+-----------+ |1|001|函館市  | +---+---+-----------+ |2|001|札幌市  | +---+---+-----------+ |3|002|青森市  ‎| +---+---+-----------+ |4|002|つがる市 ‎| +---+---+-----------+ 【SQL】 SELECT main_table.*, sub_table.* FROM main_table JOIN main_table ON main_table.no = main_table.no 【sample.php】 +---+-----------+-----------+ |no|todouhuken|shi     | +---+-----------+-----------+ |001|北海道  |函館市  | +---+-----------+-----------+ |001|北海道  |札幌市  | +---+-----------+-----------+ |002|青森   |青森市  ‎| +---+-----------+-----------+ |002|青森   |つがる市 ‎| +---+-----------+-----------+ この、【sample.php】を下記のような表示にしたいのですが可能でしょうか? 【sample.php】理想 +---+-----------+-------------------+ |no|todouhuken|shi            | +---+-----------+-------------------+ |001|北海道  |函館市 / 札幌市 | +---+-----------+-------------------+ |002|青森   |青森市 / つがる市 ‎| +---+-----------+-------------------+ ご教授お願い致します。

    • ベストアンサー
    • PHP
  • updateができない。

    mysql-4.1.11を使っています。 ひとつのDBの中にtableがふたつあります。仮にtable1,table2とします。 このふたつのテーブルについて select * from table1,table2 where table1_col1=table2_col1; というふうにすると、table1_col1とtable2_col1の値が等しいものだけ抽出してくれます。table1_co1,table2_col2というのはそれぞれのテーブルのカラムのひとつです。 しかし、同じ条件で update table1,table2 set table1_col2="A" where table1_col1=table2_col1; という命令を実行しても 「Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0」 というメッセージが出るだけでtable1_col2の値が変わりません。本当なら3つのデータが変わるはずです。 命令の仕方がおかしいのでしょうか? ほかにおかしなところがあるのでしょうか? よろしくおねがいします。

  • データの呼び出し

    自分のプロフィール等をデータベースに記録するソフト作りで、まず簡単に「自分の名前」を書き込んだりそれを読みだすだけのものを作ろうと思ってます。 市販の本を参考にトライしている最中ですが、断念しかけています。 「Table1」はテーブルのnameです。 ______ Public Class Form1 Private Sub Table1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Table1BindingNavigatorSaveItem.Click Me.Validate() Me.Table1BindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.Database1DataSet) End Sub _____ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Table1TableAdapter.Fill(Me.Database1DataSet.Table1) End Sub ____ Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click Table1BindingSource.AddNew() End Sub End Class ______ TextBoxプロパティDataBindingsのTextは「BindingSource - name」にしてあります。デザイナのテキストボックスはデータソースからドラッグしたものです。(Table1\name) テキストボックスに入力したものは、これでデータベースに保存できると思います。 次回からこのソフトを立ち上げたときに、自動的にプロフィールを呼び出せるようにしたいです。 Loadのイベントハンドラで 「もし(If)データベースに表示すべきデータがあるなら TextBoxname.Text = 何らかのコード」で良いと思うのですが、データがあるかないかという判定や、何らかのコードが分かりません。 知識不足なところですが、ヒント等ご教授いただけたらと思います。

  • SQLのチューニング

    テーブルのアップデートに3時間もかかってしまい困っています。 チューニングにより速度改善できそうであれば、 教えていただけませんでしょうか? UPDATE TABLE_A SET TABLE_A.MATI_CD = TABLE_B.MATI_CD, TABLE_A.UPD_DT = GETDATE(), TABLE_A.UPD_MOD = 'バッチXX' FROM TABLE_A INNER JOIN TABLE_B ON TABLE_A.KEN_CD = TABLE_B.KEN_CD AND TABLE_A.MATI_NM = TABLE_B.MATI_NM AND TABLE_B.NENDO = '2004' WHERE ( TABLE_A.MATI_CD IS NULL AND TABLE_A.MATI_NM <> '' OR TABLE_A.MATI_CD = '' AND TABLE_A.MATI_NM <> '' ) AND TABLE_A.CRE_DT >= '2004/04/01' TABLE_A KEN_CD ・・・ (key)県コード KEN_NM ・・・ 県名称 UKE_NO ・・・ (key)受付番号 EDA_NO ・・・ (key)受付番号枝番 MATI_CD・・・ 町コード MATI_NM・・・ 町名称 CRE_DT ・・・ データ新規作成日 CRE_MOD・・・ データ新規作成モジュール名 UPD_DT ・・・ データ更新日 UPD_MOD・・・ データ更新モジュール名 TABLE_B NENDO ・・・ (key)登録年度 MATI_CD・・・ (key)町コード MATI_NM・・・ 町名称 KEN_CD ・・・ 県コード CRE_DT ・・・ データ新規作成日 CRE_MOD・・・ データ新規作成モジュール名 UPD_DT ・・・ データ更新日 UPD_MOD・・・ データ更新モジュール名 TABLE_Aは受付記録を残すテーブルで、 現在およそ300万件入っています。 TABLE_Bは町コードのマスタテーブルで、 14000件入っています。 目的としては TABLE_Aの町コードがNULLで町名称が登録されている場合、 TABLE_Bのマスタから町コードを登録してやろうという修正バッチです。 これがTABLE_Bが大量データのためかわかりませんが、 3時間もかかってしまうんです。。。 何か良い手段はありませんでしょうか? ご助言お願いいたします。