插入一行并通过子查询选择或插入外键

时间:2018-02-04 17:40:44

标签: mysql

在过去的两天里,我遇到了以下问题我想用一个查询在logintime表中插入数据。我正在运行MySQL 5.7.21

我面临的问题是:玩家可能不存在于播放器表中,因此我正在寻找一种查找外键的解决方案,如果它不存在在播放器表中创建一个新玩家,并在登录时间表中使用新创建的玩家ID。

玩家表:

+----+-------+------+
| id | name  | type |
+----+-------+------+
|  1 | Steve |    2 |
|  2 | Tim   |    1 |
+----+-------+------+

登录时间表:

+---------------------+------------+----------+
|      logintime      | logouttime | playerid |
+---------------------+------------+----------+
| 2018-02-04 12:44:11 | NULL       |        1 |
| 2018-02-03 10:55:32 | NULL       |        2 |
| 2018-02-03 09:22:02 | NULL       |        1 |
+---------------------+------------+----------+

谢谢

修改

DELIMITER $$
CREATE PROCEDURE insertOnline (IN Name VARCHAR(30))
BEGIN
DECLARE playerid INT;

    INSERT IGNORE INTO players (name) VALUES (Name);
    SET playerid = (SELECT id FROM players p WHERE p.name = Name);
    INSERT INTO playersonline (playerid) VALUES (playerid);
END$$
DELIMITER ;

0 个答案:

没有答案