sql - 存储过程不更新表格内容
问题描述
我在练习 MariaDB 存储过程。我创建了一个简单的存储过程,它应该更新表中的一行,但它不会更新它。
USE testdb;
CREATE TABLE IF NOT EXISTS games_status (player_1 VARCHAR(30), player_2 VARCHAR(30), player_3 VARCHAR(30), player_4 VARCHAR(30), player_5 VARCHAR(30), player_6 VARCHAR(30), game_room INT);
INSERT INTO games_status (game_room) VALUE (1);
DELIMITER $$
CREATE PROCEDURE new_player(in_name VARCHAR(30), in_game_room INT)
BEGIN
DECLARE var_player_1 VARCHAR(30);
DECLARE var_player_2 VARCHAR(30);
DECLARE var_player_3 VARCHAR(30);
DECLARE var_player_4 VARCHAR(30);
DECLARE var_player_5 VARCHAR(30);
DECLARE var_player_6 VARCHAR(30);
SELECT player_1, player_2, player_3, player_4, player_5, player_6
INTO var_player_1, var_player_2, var_player_3, var_player_4, var_player_5, var_player_6
FROM games_status
WHERE game_room = in_game_room;
IF var_player_1 = NULL THEN
UPDATE games_status
SET
player_1 = in_name
WHERE
game_room = in_game_room;
END IF;
END $$
DELIMITER ;
当我跑
CALL new_player("Tom", 1);
SELECT * FROM games_status;
我明白了
+----------+----------+----------+----------+----------+----------+-----------+
| player_1 | player_2 | player_3 | player_4 | player_5 | player_6 | game_room |
+----------+----------+----------+----------+----------+----------+-----------+
| NULL | NULL | NULL | NULL | NULL | NULL | 1 |
+----------+----------+----------+----------+----------+----------+-----------+
所以player_1
与其说是Tom
,不如说是NULL
。我在哪里做错了?
mariadb 版本是 10.4.13
谢谢
解决方案
推荐阅读
- typescript - 根据联合类型下多个类型的参数创建Object类型
- typescript - 在ts中,我希望函数的参数是a或b,例如:
- reactjs - 将 npm react-date-picker 限制为仅在反应中动态显示从今天开始的最后 30 天
- reactjs - 如何在反应三纤维中将相机嵌套在一组中
- c# - Selenium C# 代码有效,但需要等待或延迟
- json - 错误:类型“字符串”不是“地图”类型的子类型
' 在类型转换中 - python - MongoDB Python list_database_names() 错误
- yosys - 错误:在库中找不到缓冲门
- java - 如何为不在您的路径上的 JDK 创建 JavaCompiler 实例?
- python-3.x - sudo 作为 python 程序中的用户