gpt4 book ai didi

mysql - id 的含义 = LAST_INSERT_ID(id)

转载 作者:行者123 更新时间:2023-11-29 16:05:57 24 4
gpt4 key购买 nike

假设我有一张 table :

CREATE TABLE files (
id_prod INT UNSIGNED NOT NULL DEFAULT PRIMARY KEY AUTO_INCREMENT,
id_rel INT UNSIGNED,
name VARCHAR(250),
other VARCHAR(200),
UNIQUE INDEX(id_rel , name)
);

并且我想使用唯一的查询来插入/更新此表上的数据:

INSERT INTO files (id_rel , name)
VALUES ('25', 'test')
ON DUPLICATE KEY UPDATE

现在,阅读 MySQL 手册时我读到了这一点:

ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)

所以我认为我的查询应该是:

INSERT INTO files (id_rel , name)
VALUES ('25', 'test')
ON DUPLICATE KEY UPDATE id_prod = LAST_INSERT_ID(id), name = 'TESTED'

但如果我只使用的话,有什么区别:

INSERT INTO files (id_rel , name)
VALUES ('25', 'test')
ON DUPLICATE KEY UPDATE name = 'TESTED'

我无法理解 LAST_INSERT_ID(id) 的含义。 (id) 是什么以及它应该做什么?

最佳答案

仅当您的应用程序需要在执行 INSERT 后调用 LAST_INSERT_ID() 时,才需要这样做。通常,LAST_INSERT_ID() 仅当您实际向表中插入新行时才会返回一个值,而不是因为存在重复键而更新了该行。

来自documentation :

If expr is given as an argument to LAST_INSERT_ID(), the value of the argument is returned by the function and is remembered as the next value to be returned by LAST_INSERT_ID().

如果您使用引用的习惯用法,LAST_INSERT_ID() 将返回插入的新行或更新的行的 ID。

关于mysql - id 的含义 = LAST_INSERT_ID(id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com