我试图创建一个功能
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并确定它是否存在; 如果存在则检索id并update使用它id; 否则只是做一个平原INSERT.
现在我的问题是:除了sql我现在正在做的事情之外,还有其他两种做法的替代方案吗?
编辑1
附录:
有一个自动递增的索引.要插入的所有值都是唯一的
我宁愿不改变索引,因为它被引用到另一个表中.