将唯一值的主键插入外键

时间:2019-10-09 23:05:54

标签: sqlite sql-insert

如果我有两个这样的表:

CREATE TABLE users 
(
    id INTEGER PRIMARY KEY,
    username TEXT UNIQUE NOT NULL
);

CREATE TABLE games 
(
    id INTEGER PRIMARY KEY,
    player1 INTEGER REFERENCES users,
    player2 INTEGER REFERENCES users,
    comment TEXT
);

在给定两个用户名的情况下,如何在games表中插入新行?

首先需要通过用户名在users表中查找用户的主键,然后将其插入games表中。最好的方法是什么?

所以,而不是

INSERT INTO games (player1, player2) 
VALUES (1, 2);

如何将其与从用户名中查找ID值结合起来?

1 个答案:

答案 0 :(得分:1)

您可以使用子查询根据两个用户名的id来查找它们:

INSERT INTO games (player1, player2, comment)
SELECT
     (SELECT username FROM users WHERE id = 1),
     (SELECT username FROM users WHERE id = 2),
     'good luck';