Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Teilen Sie mehrere SQL-Anweisungen in einzelne SQL-Anweisungen auf

Ich bin mir nicht sicher, ob das überhaupt möglich ist. Sie benötigen sicherlich fundierte Kenntnisse der SQL-Syntax Ihres Ziel-DBMS. Zum Beispiel ist dies eine einzelne MySQL-Anweisung, die mir spontan eingefallen ist:

INSERT INTO things
SELECT * FROM otherthings ON DUPLICATE KEY
UPDATE thingness=thingness+1

Es ist wahrscheinlich, dass es in einigen DBMS Konstrukte gibt, die ohne Trennzeichen mehrdeutig sein könnten.

Ich denke, man wird dazu gezwungen. Dies ist die Standardmethode zum Trennen von SQL-Anweisungen. Selbst wenn Sie eine Heuristik finden können, um wahrscheinliche Anfangspunkte von SQL-Anweisungen zu erkennen, riskieren Sie Katastrophen wie eine versehentliche „DELETE FROM things“-ohne-WHERE-Klausel.

Wäre ein doppelter Zeilenumbruch für eine neue Anweisung akzeptabel?

Nein, sogar mit Semikolon-Trennzeichen, Regex ist bei weitem nicht leistungsfähig genug, um SQL zu parsen. Zu den Problempunkten gehören:

';'
";"
`;`
'\';'
''';'
-- ;
#;
/*;*/

und jede Zwischenschaltung dieser Strukturen. Eek!