簡體   English   中英

在表中創建或更新行的 MySQL 過程

[英]MySQL procedure to create or update a row in a table

我想編寫一個 MySQL proc,它接受userIduserName並根據是否存在users.userId = userId的行對表users進行插入或更新

我在這里看到了一個類似的問題: MySql create or update row with ip?

但是我想在存儲過程中執行此操作並想知道這是否提供了任何其他工具?

您不需要存儲過程,您可以使用INSERT ... ON DUPLICATE KEY UPDATE ... 假設 userid 是PRIMARYUNIQUE鍵,這將起作用:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM