2つのテーブル(table1、table2)があります。table1にはフィールドidがあり、table2にはフィールドid_eidがあり、table1のidフィールドを外部キーとして参照します。
決定された基準に一致するすべての行をtable1から削除する必要があります。次に、これらのデータがtable2で参照されている場合は、そのデータも削除します。
con
Connectionオブジェクトがであり、autocommitがfalseに設定されていると仮定して、そのようなことを行います。
String query1 = "delete from table2 where exists
(select * from table1 where someparameter = ? and table1.id = table2.id_eid)"
次に、PreparedStatementを使用して最初のquery1を実行します。
で、〜がある
String query2 = "delete from table1 where someparameter = ?
and exists (select * from table2 where table1.id = table2.id_eid)"
そして私はこれを別のPreparedStatmentで実行しました。
最後に私は持っていcon.commit()
ます。
これは機能しません。autocommitを使用して2つのクエリが一緒に実行されたと偽ることを考えていましたが、そうではありません。2番目のクエリは行を削除しません。どうすればよいですか?
重要な注意点として、table1のすべての行にtable2の参照行があるわけではありません。
ありがとう