Je suis en train de créer 2 déclarations MySQL qui insérer une nouvelle ligne dans une colonne et référence la même ligne dans un autre, comme celui-ci:Problèmes avec LAST_INSERT_ID() et mysql_insert_id()
Si vous avez besoin de savoir , J'utilise Java/com.mysql.jdbc.Driver
insertNewMessage = connection
.prepareStatement(new StringBuilder(128)
.append("INSERT INTO messages (Message,SHA256) VALUES (?,?);")
.append("INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INSERT_ID()),?,?)")
.toString());
il le rendre plus clair, mon instruction SQL est:
INSERT INTO messages (Message,SHA256) VALUES (?,?);
INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INSERT_ID()),?,?)
Je veux prendre la nouvelle valeur ROWID créé dans les messages table et insérez-le dans la table messagelog.
Je trouve LAST_INSERT_ID(), mysql_insert_id() ne fonctionnant pas tous les deux. Je reçois l'exception suivante jeté:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INS' at line 1
Dans la documentation MYSQL, il semble que LAST_INSERT_ID devrait fonctionner, mais je devine il y a des mises en garde. Je ne sais pas ce que sont ces mises en garde. (Oui A.I est défini sur les ROWID)
Vous essayez de caser deux requêtes SQL en un seul. Vous ne pouvez pas faire cela à moins que vous ayez spécifié 'allowMultiQuery = true' pour la connexion. Voir: http://stackoverflow.com/questions/10797794/multiple-queries-executed-in-java-in-single-statement –
Ajout de cela n'a pas fonctionné, mais il semble que la voie à suivre est la création d'une procédure de magasin . –