Как вставить данные в таблицу с внешними ключами?

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

пользователь: user_id(PK) | name
продукт: 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)";

Что я могу сделать, когда я хочу вставить несколько продуктов одному конкретному пользователю с идентификатором 2?
Что-то вроде этого: «вставить в значения продукта (продукт), где пользователь (user_id) = 2».
Это как должна выглядеть моя таблица:

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

person gola    schedule 18.06.2020    source источник


Ответы (1)


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

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

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");
person gola    schedule 18.06.2020