[英]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.