Вставьте первичный ключ уникального значения во внешний ключ - PullRequest
0 голосов
/ 10 октября 2019

Если у меня есть две таблицы, подобные этой:

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);

как я могу комбинировать это с поиском значений идентификаторов из имен пользователей?

1 Ответ

1 голос
/ 10 октября 2019

Вы можете использовать подзапросы для поиска двух имен пользователей на основе их id s:

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