Comment insérer par lots les identifiants insérés dans MySQL
P粉738248522
P粉738248522 2024-03-26 14:08:28
0
1
485

J'essaie d'obtenir l'insertid après avoir inséré plusieurs lignes dans la table MySQL à l'aide de cette requête

insert into sometable (id , candidateid , createdby)
    values ('61','3175','1425'),('60','3175','1425'),('42','3175','1425'),('61','3176','1425'),('60','3176','1425'),('42','3176','1425') OUTPUT INSERTED.id

Mais j'obtiens une erreur de syntaxe SQL

code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "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 'OUTPUT INSERTED.id' at line 2",
  sqlState: '42000',

Comment obtenir un identifiant d'insertion

P粉738248522
P粉738248522

répondre à tous(1)
P粉614840363

OUTPUT INSERTED La syntaxe est une chose de Microsoft SQL Server. MySQL ne prend pas en charge cette syntaxe.

Dans votre exemple, vous avez défini les valeurs id explicitement, il n'est donc pas nécessaire de les renvoyer. Récupérez-les simplement à partir de vos propres valeurs, que vous connaissez évidemment déjà avant d'effectuer l'insertion.

Vous comptez peut-être sur les identifiants à incrémentation automatique générés lors des insertions.

Pour obtenir l'ID d'incrémentation automatique de la ligne la plus récemment insérée, utilisez la fonction LAST_INSERT_ID() dans une requête distincte après l'INSERT.

LAST_INSERT_ID() renvoie uniquement le premier ID généré lors de l'insertion. Si vous effectuez une insertion sur plusieurs lignes, c'est à vous d'en déduire les identifiants suivants. Ce sont généralement des valeurs continues. Par exemple, le pilote MySQL JDBC s'appuie sur des valeurs consécutives afin de pouvoir renvoyer des ensembles d'identifiants après des insertions groupées.

Cependant, si vous modifiez innodb_autoinc_lock_mode=2 ils ne sont pas garantis comme étant des valeurs consécutives, il alloue les valeurs d'auto-inc de manière "entrelacée", de sorte que les insertions simultanées peuvent obtenir des valeurs de la séquence entre les ensembles générés par inserts multi-rangs . Ce n'est pas le mode par défaut, vous pouvez donc le définir volontairement.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!