相关疑难解决方法(0)

使用last_insert_id()插入DUPLICATE KEY UPDATE

我试图创建一个功能

CREATE FUNCTION `func`(param1 INT, param2 INT, param3 TEXT) RETURNS int(11)
BEGIN
INSERT INTO `table1` (`column1`, `column2`, `column3` ) 
VALUES (param1, param2, param3)
ON DUPLICATE KEY 
UPDATE `time_stamp` = UNIX_TIMESTAMP();
RETURN last_insert_id();
END
Run Code Online (Sandbox Code Playgroud)

如果它不存在,则会在表中插入一行,否则会更新它.请注意,last_insert_id()如果函数将插入则返回哪个是正确的,否则在更新时将是不可预测的.

我知道解决这个问题的另一种方法是使用单独的方法SELECTS并确定它是否存在; 如果存在则检索idupdate使用它id; 否则只是做一个平原INSERT.

现在我的问题是:除了sql我现在正在做的事情之外,还有其他两种做法的替代方案吗?

编辑1

附录:

有一个自动递增的索引.要插入的所有值都是唯一的

我宁愿不改变索引,因为它被引用到另一个表中.

mysql stored-functions

2
推荐指数
1
解决办法
6881
查看次数

标签 统计

mysql ×1

stored-functions ×1