ВСТАВИТЬ В ОДИН К ОДНОЙ СВЯЗИ
Как вставить записи в отношения один к одному?
скажем, что у меня есть 3 таблицы: таблица A, таблица B, таблица C
Мне нужно вставить запись в те таблицы, для которых в таблице A указывается основная таблица первичного ключа.
Давайте просто скажем так:
tableB.PK = tableA.PK
tableC.PK = tableA.PK
Теперь,
когда я вставляю записи в tableB или tableC, возникает ошибка:
Error Message: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_tableB_tableA"
Но когда я вставляю в tableA, который является основой первичных ключей двух таблиц, это нормально, и он увеличивается.
Как бы вставить запись? В частности, в JPA.
- Нужно ли сначала вставлять в tableA, а затем вставлять в другие? (Просто сделал это, и он не работает)
- Нужно ли мне вставлять данные в таблицы одновременно? (Как? В JPA будет хорошо)
Ответы
Ответ 1
Здесь снова мой комментарий как ответ
так как у вас есть ссылка в tableB и tableC на tableA, вам нужно сначала вставить tableA и заново сгенерировать PK. Затем вы можете вставить любую из других таблиц с полученным идентификатором. Для JPA смотрите здесь: Как получить идентификатор последнего сохраняемого объекта с использованием JPA
И вот пример того, как добиться этого в sql-сервере:
http://sqlfiddle.com/#!3/a3f62/3
это базовая база реляционных баз данных и внешних ключей, я не читал статью wiki, но она должна упоминать то же самое thinkg: http://en.wikipedia.org/wiki/Foreign_key