纠结这个问题太久了,特来求救。。。
我有一个 MySQL 存储过程,我想执行以下操作:
给定记录的“id”和“用户名”
- 如果表中不存在 id 则创建记录
- 否则,如果 id 存在且用户名与存在的不同,则更新记录
- 否则什么都不做
我尝试了以下方法:
BEGIN
DECLARE doCreate INT;
DECLARE doUpdate INT;
SELECT COUNT(*) INTO doCreate FROM app_user WHERE id=1;
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF
IF(doCreate = 0) THEN ---SYNTAX ERROR ON THIS LINE---
SELECT 'CREATE';
ELSE IF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF
END
我也尝试用 case 语句替换 if-elseif-else 块,但得到相同的结果......
CASE ---ERROR ON THIS LINE---
WHEN doCreate = 0 THEN
SELECT 'CREATE';
WHEN doUpdate = 0 THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END
- 我似乎对第一个 END IF 之后的任何内容都有语法错误,所以这是发生的第一个问题......
任何帮助将不胜感激 - 我相信有更好的方法来做到这一点。