使用此查詢在 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
uj5u.com熱心網友回復:
OUTPUT INSERTED語法是Microsoft SQL Server 的東西。MySQL 不支持該語法。
在您的示例中,您已id明確設定值,因此無需回傳它們。只需從您在執行 INSERT 之前顯然已經知道的您自己的價值觀中獲取它們。
您可能依賴于在 INSERT 期間生成的自動遞增 id。
要獲取最近插入的行的自動增量 ID,請在 INSERT 之后的單獨查詢中使用LAST_INSERT_ID() 函式。
LAST_INSERT_ID() 僅回傳插入期間生成的第一個id。如果您進行多行插入,則由您來推斷后續的 id。它們通常是連續的值。例如,MySQL JDBC 驅動程式依賴于它們是連續值,因此它可以在批量插入后回傳一組 id。
但是,如果您更改了以“交錯”方式分配 auto-inc 值的更改,則不能保證它們是連續值,因此并發插入可能會從您的多行插入生成的集合之間的序列中獲取一個值。innodb_autoinc_lock_mode=2這不是默認模式,因此您會故意設定它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/496299.html
