Mysql
 sql >> Base de données >  >> RDS >> Mysql

Fractionner plusieurs instructions SQL en instructions SQL individuelles

Je ne suis pas sûr que ce soit possible du tout. Vous auriez certainement besoin d'une connaissance approfondie de la syntaxe SQL de votre SGBD cible. Par exemple, juste au dessus de ma tête, il s'agit d'une seule instruction MySQL :

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

Il est probable qu'il existe des constructions dans certains SGBD qui, sans délimiteur, pourraient être ambiguës.

Je pense que tu peux y être obligé. C'est totalement la manière standard de délimiter les instructions SQL. Même si vous pouvez trouver une heuristique pour détecter les points de début d'instruction SQL probables, vous risquez des catastrophes comme un "SUPPRIMER DES choses" accidentel sans clause WHERE.

Une double nouvelle ligne pour une nouvelle instruction serait-elle acceptable ?

Non, même avec délimiteurs point-virgule, regex est loin d'être assez puissant pour analyser SQL. Les points problématiques incluraient :

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

et toute interposition de ces structures. Beurk !