0
私はテーブルINVENTORY
を更新するためにprepared statements
でtransactions
を使用しようと失敗します同じプライマリキーを使用して、古い値+新しい値を追加して更新します。取引
私はthisとthisを読みました。私は正しい指示に従ったと思います。私のテーブルで
String sqInsert = "INSERT INTO INVENTORY VALUES ('100541026044','01','301610101','10054102604401301610101','5000')";
String sqUpdate = "UPDATE INVENTORY set quantity = quantity + 5000 where barcode='10054102604401301610101'";
// transaction block start
c.setAutoCommit(false);
stm = c.prepareStatement(sqInsert);
System.out.println("try to insert");
result = stm.executeUpdate();
System.out.println("try to update");
stm = c.prepareStatement(sqUpdate);
result = stm.executeUpdate();
c.commit(); //transaction block end
System.out.println("Done!");
barcode=10054102604401301610101
を持つ行が存在しているので、私は更新が実行されるようにしたいです。しかし、私は
try to insert
Error inserting products :[SQLITE_CONSTRAINT] Abort due to constraint violation (UNIQUE constraint failed: INVENTORY.barcode)
注意を得る:(私はしかしstm.setString(1, "string");
と、クエリからの値を設定しない)私はちょうどそれがのために失敗し、ここで
挿入と更新の両方を実行しています。 (そして、挿入が成功すると、新しい行を更新します。)if/elseが必要です。 –
@ CL。両方のクエリが実行されていますか?はいの場合、私はコンソールに「更新しようとする」というメッセージが表示されません。 – yaylitzis
最初に更新を照会してから挿入して、それを処理しました。 – yaylitzis