Evet, çoğu veritabanları buna izin i gibi şeyler yapabiliriz bir yol .. yoktur. Genellikle SQL ifadelerinizi bir şeyle sınırlandırmanız gerekir. PostGRES ve MySQL'de bir noktalı virgül (;). Microsoft SQL sunucusunda GO anahtar sözcüğünü kullanmalısınız. [Mayıs 2013 Güncelleme: SQL Server 2012'den itibaren, ifadelerinizi sınırlamak için noktalı virgül kullanabilirsiniz ve kullanmalısınız. SQL Server 2012'den sonra (yani sonraki sürüm ve ötesi) bunlar zorunlu olacaktır. GO kullanmak, SQL2012 ve ötesindeki işleri yapmak için artık kullanılmayan bir yoldur. ]
MySQL/PostgreS örnek:
DELETE FROM DUMMYTABLE_A where X=${value};
DELETE FROM DUMMYTABLE_B where X=${value};
DELETE FROM DUMMYTABLE_C where X=${value};
MS-SQL örnek: Ayrıca TRAN/ROLLBACK TRAN COMMIT/TRAN BEGIN ile işlemleri destekleyecek
DELETE FROM DUMMYTABLE_A where X=${value}
GO
DELETE FROM DUMMYTABLE_B where X=${value}
GO
DELETE FROM DUMMYTABLE_C where X=${value}
Daha iyi veritabanları (yani değil MySQL.) . İşlemleri kullanarak, tüm ifadeleri tek atomlu bir işlemle gruplayabilirsiniz, burada bir kısmı başarısız olursa, üçü de geri alınır. Bunlar hakkında daha fazla bilgi için bkz. http://www.sqlteam.com/article/introduction-to-transactions.
Büyük olasılıkla ihtiyacınız olan tüm SQL deyimleri arasındaki noktalı virgül olsa!
Bilmiyorum ama bu onu iki ifadeleri ayırmak olmadığını görebilirsiniz sonraki özünü https://gist.github.com/AdelinGhanaem/b565ca3a447e89087ab7 bağlama am benim için çalışmıyor rollback ile 'sorgu' ... – Adelin
Bu yolu denedim ve myBatis bir istisna attı. Sorun, JDBC URL'sinde flag allowMultiQueries = true ayarlamamdı. Teşekkürler. –
Bu benim için de işe yaramıyor, ben 'in' durumu ile iki toplu veri silmeye çalışıyorum, ancak sql dilbilgisi sözdizimi hatası var. –