我试图创建一个函数
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
如果它不存在,这将在表中插入一行,否则更新它。请注意,如果函数将插入,我返回last_insert_id()
的将是正确的,否则如果它更新将是不可预测的。
我知道解决此问题的替代方法是使用单独的SELECTS
并确定它是否存在;如果存在,则检索id
并update
使用它id
;否则就做一个普通的INSERT
.
现在我的问题是:除了我现在正在做的事情之外,还有什么替代方法可以做 2 个sql
陈述吗?
编辑 1
附录:
有一个自动递增的索引。要插入的所有值都是唯一的
我宁愿不更改索引,因为它在另一个表中被引用..