Как мне вставить данные в таблицу с внешними ключами? - PullRequest
0 голосов
/ 18 июня 2020

У меня две таблицы:

пользователь: user_id(PK) | name product: product_id(PK) | product | user_id(FK)

Это отношение «один ко многим» (один пользователь может иметь несколько продуктов). Я создал свои таблицы со следующими операторами:

String stmt_user = "create table user (user_id int not null generated by default as identity," 
                   + "name varchar(20), " 
                   + "primary key(user_id))";

String stmt_prod = "create table product (product_id int not null generated by default as identity,"
                   + "product varchar(20), "
                   + "constraint ads_pk primary key(product_id), "
                   + "foreign key(user_id)  references user(user_id) on delete cascade)";

Что я могу сделать, если я хочу вставить несколько продуктов в одного указанного c пользователя с идентификатором 2?
Примерно так: "insert в значения продукта (product), где user (user_id) = 2 ".
Вот как должна выглядеть моя таблица:

|---------------------|------------------|---------------|
|      product_id     |     user_id      |    product    |
|---------------------|------------------|---------------|
|          1          |         2        |     bacon     |
|---------------------|------------------|---------------|
|          2          |         2        |     pizza     |
|---------------------|------------------|---------------|
|          3          |         2        |     beans     |
|---------------------|------------------|---------------|

1 Ответ

0 голосов
/ 18 июня 2020

Наконец-то нашел свой ответ отсюда: Вставить в таблицу с внешним ключом

Мне пришлось обновить оператор создания продукта:

String stmt_prod = "create table product (product_id int not null generated by default as identity,"
                   + "product varchar(20), "
                   + "constraint ads_pk"
                   + "foreign key(user_id) references user(user_id) on delete cascade)";

А теперь моя инструкция по вставке продукта выглядит так и хорошо работает:

"insert into product (product, user_id) select product, u.user_id from user u where u.user_id = 2");
...