ВСТАВИТЬ В ОДИН К ОДНОЙ СВЯЗИ

Как вставить записи в отношения один к одному?

скажем, что у меня есть 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