我正在尝试创建一个函数
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
并使用该id
进行update
;否则只需执行普通的INSERT
。现在我的问题是:有没有其他方法可以执行2个
sql
语句,而不是现在正在做的事情?编辑1:
附加说明:
有一个自动递增的索引。 要插入的所有值都是唯一的。
我不想改变索引,因为它被另一个表中引用。