首页  >  问答  >  正文

如何在mysql中批量插入插入的id

在使用此查询在 mysql 表中插入多行后,我试图获取 insertid

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

但我收到 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',

如何获取插入ID

P粉738248522P粉738248522229 天前489

全部回复(1)我来回复

  • P粉614840363

    P粉6148403632024-03-27 00:53:20

    OUTPUT INSERTED 语法是 Microsoft SQL Server 事物。 MySQL 不支持该语法。

    在您的示例中,您已显式设置 id 值,因此无需返回它们。只需从您自己的价值观中获取它们即可,而您在执行插入之前显然已经知道了这些价值观。

    您可能依赖于在插入期间生成的自动递增 ID。

    要获取最近插入的行的自动增量ID,请使用LAST_INSERT_ID() 函数 在 INSERT 之后的单独查询中。

    LAST_INSERT_ID() 仅返回插入期间生成的第一个 ID。如果您执行多行插入,则由您来推断后续 id。它们通常是连续值。例如,MySQL JDBC 驱动程序依赖于它们是连续值,因此它可以在批量插入后返回 id 集。

    但是,如果您更改了 innodb_autoinc_lock_mode=2 ,则它们不能保证是连续值,它以“交错”方式分配 auto-inc 值,因此并发插入可能会从序列中获取值在多行插入生成的集合之间。这不是默认模式,因此您可能会故意设置它。

    回复
    0
  • 取消回复