のようなものを行うことができる方法があるはい、ほとんどのデータベースは、これを許可します。通常は、SQLステートメントを何かで区切る必要があります。 PostGRESとMySQLではセミコロン(;)です。 Microsoft SQLサーバーでは、キーワードGOを使用する必要があります。 [2013年5月更新:SQL Server 2012の時点では、ステートメントの区切りにセミコロンを使用する必要があります。 SQL Server 2012(つまり、次のバージョン以降)の後は、これらは必須となります。 GOを使用することは、SQL2012以降のことをやめることになりました。 ]
のMySQL/Postgresの例:
DELETE FROM DUMMYTABLE_A where X=${value};
DELETE FROM DUMMYTABLE_B where X=${value};
DELETE FROM DUMMYTABLE_C where X=${value};
MS-SQL例:またTRAN/ROLLBACK TRAN/COMMIT TRANをBEGINとの取引をサポートします
DELETE FROM DUMMYTABLE_A where X=${value}
GO
DELETE FROM DUMMYTABLE_B where X=${value}
GO
DELETE FROM DUMMYTABLE_C where X=${value}
ベター・データベース(すなわちないのMySQL。) 。トランザクションを使用すると、実際にすべてのステートメントを1つのアトミック操作にバッチすることができます。ここで、その一部が失敗した場合、3つすべてがロールバックされます。これらの詳細については、http://www.sqlteam.com/article/introduction-to-transactionsを参照してください。
ほとんどの場合、必要なのはSQL文のセミコロンだけです。
私はあなたがそれを持つ2つの文を分離しないことがわかりますhttps://gist.github.com/AdelinGhanaem/b565ca3a447e89087ab7次の要旨を添付しています私は知らないが、これは私のために動作しません。ロールバックと同様に 'クエリ' ... – Adelin
私はこの方法を試して、myBatisは例外を投げました。問題は、JDBC URLでallowMultiQueries = trueフラグを設定しなかったことです。ありがとう。 –
これは私のためにもうまくいきません。私は 'in '条件で2つのデータバッチを削除しようとしていますが、SQL文法の構文エラーがあります。 –