在过去的两天里,我遇到了以下问题我想用一个查询在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 ;