Sì, la maggior parte dei database permettono questo. Di solito devi delimitare le tue istruzioni SQL con qualcosa. In PostGRES e MySQL è un punto e virgola (;). Nel server Microsoft SQL è necessario utilizzare la parola chiave GO. [Aggiornamento di maggio 2013: a partire da SQL Server 2012, è possibile e dovrebbe utilizzare il punto e virgola per delimitare le proprie istruzioni. Dopo SQL Server 2012 (vale a dire la prossima versione e oltre) questi saranno obbligatori. L'utilizzo di GO è ora il modo deprecato di fare cose in SQL2012 e oltre). ]
MySQL/Postgres esempio:
DELETE FROM DUMMYTABLE_A where X=${value};
DELETE FROM DUMMYTABLE_B where X=${value};
DELETE FROM DUMMYTABLE_C where X=${value};
MS-SQL Esempio:
DELETE FROM DUMMYTABLE_A where X=${value}
GO
DELETE FROM DUMMYTABLE_B where X=${value}
GO
DELETE FROM DUMMYTABLE_C where X=${value}
Meglio database (cioè non MySQL.) Sosterrà anche le operazioni con BEGIN TRAN/commit TRAN/ROLLBACK TRAN . Usando le transazioni puoi effettivamente raggruppare tutte le istruzioni in un'unica operazione atomica, dove se una parte di essa fallisse, tutte e tre verrebbero ripristinate. Vedi http://www.sqlteam.com/article/introduction-to-transactions per ulteriori informazioni su quelli.
Molto probabilmente tutto ciò che serve è il punto e virgola tra le istruzioni SQL però!
fonte
2011-10-18 05:52:54
Non so, ma questo non funziona per me Vi allego la prossima Gist https://gist.github.com/AdelinGhanaem/b565ca3a447e89087ab7 si può vedere che non separa le due affermazioni con 'query' come con rollback ... – Adelin
Ho provato in questo modo e myBatis ha generato un'eccezione. Il problema era che non ho impostato il flag allowMultiQueries = true nell'URL JDBC. Grazie. –
Questo non funziona anche per me, sto cercando di eliminare due batch di dati tramite la condizione 'in', tuttavia ho ottenuto l'errore di sintassi della grammatica sql. –