[英]MySQL procedure to create or update a row in a table
我想编写一个 MySQL proc,它接受userId
和userName
并根据是否存在users.userId = userId
的行对表users
进行插入或更新
我在这里看到了一个类似的问题: MySql create or update row with ip?
但是我想在存储过程中执行此操作并想知道这是否提供了任何其他工具?
您不需要存储过程,您可以使用INSERT ... ON DUPLICATE KEY UPDATE ...
。 假设 userid 是PRIMARY
或UNIQUE
键,这将起作用:
INSERT INTO user
SET
userid = ?,
userName = ?
ON DUPLICATE KEY UPDATE
userName = VALUES(userName)
当然,如果需要,您可以将此查询包装在存储过程中:
DROP PROCEDURE IF EXISTS set_user;
DELIMITER //
CREATE PROCEDURE set_user(
IN i_userid INT UNSIGNED,
IN v_userName VARCHAR(50)
)
DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY INVOKER
BEGIN
INSERT INTO user
SET
userid = i_userid,
userName = v_userName
ON DUPLICATE KEY UPDATE
userName = VALUES(userName);
END;
//
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.