En TSQL je peux dire:Quel est l'équivalent de 'go' dans MySQL?
insert into myTable (ID) values (5)
GO
select * from myTable
MySQL Je ne peux pas écrire la même requête.
Quelle est la bonne façon d'écrire cette requête dans MySQL?
En TSQL je peux dire:Quel est l'équivalent de 'go' dans MySQL?
insert into myTable (ID) values (5)
GO
select * from myTable
MySQL Je ne peux pas écrire la même requête.
Quelle est la bonne façon d'écrire cette requête dans MySQL?
Point-virgule à la fin de la ligne.
INSERT INTO myTable (ID) values (5);
Juste un simple;
alors essayez
insert into myTable(ID) values (5);
select * from myTable;
un point-virgule (;
). Cela séparera vos déclarations.
Le point-virgule est le délimiteur par défaut. Vous pouvez cependant le redéfinir comme vous le souhaitez avec le mot clé DELIMITER. Du manuel MySQL:
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)
Ceci n'est pas limité aux définitions de procédures stockées bien sûr.
Je pense que le problème est que GO est un terminateur de lot, pas un terminateur d'instruction. Après avoir explicitement défini les transactions, j'ai exécuté ce code sans me dire que la procédure existe déjà. Sans les instructions de transaction, j'obtiens une erreur que la procédure existe déjà.
démarrer la transaction; drop procédure si existe usp_test; commit; démarrer la transaction; CREATE PROCEDURE usp_test() SELECT * des livres; commit; appelez usp_test();
Il ne doit même pas être à la fin de la ligne, juste à la fin de l'instruction – soulmerge
J'ai créé une instruction d'insertion avec ID = 0, puis modifié le champ en incrémentation automatique. Il a été ajouté comme ID = 1 .. – zeetit