我在mysql过程中遇到语法问题
CREATE PROCEDURE savep(
IN p_uuid VARCHAR(36),
IN p_sp INTEGER,
IN p_cd VARCHAR(250)
)
BEGIN
INSERT INTO maintable
(
uuid,
sp,
cd,
last_time_saved
)
VALUES
(
p_uuid,
p_sp,
p_cd,
now()
)
ON DUPLICATE KEY UPDATE
sp = VALUES(p_sp),
cd = VALUES(p_cd),
cd = VALUES(now()); -- syntaxerror, unexcepted NOW_SYM
END -- syntax error, unexcepted END
我在做错了什么? uuid是主表中的主键。
答案 0 :(得分:1)
我能看到的两件小事。
您在顶部没有设置分隔符(但您可能在您尝试使用的版本中有分隔符。)
其次,你在on duplicate key子句中设置了两次cd,其中一个是将它设置为 VALUES(now()),其中括号中的内容是a的名称一个列,其值来自您要将其设置为的插入的VALUES子句。
试试这个: -
DELIMITER //
CREATE PROCEDURE savep(
IN p_uuid VARCHAR(36),
IN p_sp INTEGER,
IN p_cd VARCHAR(250)
)
BEGIN
INSERT INTO maintable
(
uuid,
sp,
cd,
last_time_saved
)
VALUES
(
p_uuid,
p_sp,
p_cd,
now()
)
ON DUPLICATE KEY UPDATE
sp = VALUES(p_sp),
cd = VALUES(p_cd),
last_time_saved = now();
END