Хочу сделать словарь (в БД), где у каждого юзера есть свой набор слов для изучения.
У меня есть 3 таблицы:
1. users
2. words
3. users_words (тут связь многие к многим, 2 колонки с userId и wordId), т.к. у каждого юзера много слов и слова повторяются
Мне нужно, чтобы при записи юзером слова в БД оно проверялось и если в БД такого слова нет, слово записывалось в таблицы words и users_words. Как записать первичный ключ в users_words, если я еще не знаю какой id у words?
Первый INSERT - это CTE с соотв. выражением в RETURNING. Значения оттуда используются во втором INSERT. Проверку на существование выполнит ON CONFLICT.
WITH cte_id as (INSERT INTO words( name_word, discription_word) VALUES ('cool', 'круто') RETURNING Id)
INSERT INTO users_words(users_id,words_id,status_learn_word)VALUES(649651821, cte_id , 0) ;