繁体   English   中英

MySQL中的存储过程带有条件变量

[英]Stored procedure in MySQL with variable on the conditional

我正在做一个表,用于存储用户上次登录/注销的时间。 仅一行存储一个Id,操作存储为一个位字段,而时刻存储为DATETIME。 我的想法是做一个存储过程,以便在新用户时进行插入,并在用户存在时进行更新。 我已经完成了以下代码:

    DELIMITER $$
CREATE PROCEDURE sp_LastAction(in id_in int, accion_in bit)
begin
SELECT @CONT:= IdUsuario FROM login WHERE IdUsuario = id_in;
IF NOT @CONT then
INSERT INTO login(IdUsuario, Fecha, Accion)
values (id_in, NOW(), accion_in);
ELSE
UPDATE login SET Fecha = NOW(), Accion = accion_in
WHERE IdUsuario = id_in LIMIT 1;
end IF;
end$$
DELIMITER ;

但是,当我调用该过程时,它什么也不做,只是将变量作为空字段返回。

您可以制作一个UPSERT。

CREATE PROCEDURE `sp_LastAction`(id_in int, accion_in bit)
BEGIN
  INSERT INTO `login` (`idusuario`, `fecha`, `accion`) VALUES (id_in, now(), accion_in)
    ON DUPLICATE KEY UPDATE `fecha` = now(), `accion` = accion_in;
END //

这是一个示例: SQL Fiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM