Есть уже сообщения, например this one, в которых говорится, что «наивное» наследование в SQL, а именно использование одной таблицы на уровне класса, - это обычная вещь. Примерsql: вставить объект на несколько таблиц
create table parent
(id integer primary key
, more-parent-attributes
);
create table child
(id integer primary key references parent(id) on delete cascade
, more-child-attributes
);
Мой вопрос заключается только в том, как вставитьchild
в идиоматическом образе ANSI SQL в таблицу. Ограничение внешнего ключа делает требование о том, чтобы мы сначала ввели новую строку в parent
, а затем новую строку в child
, используя идентификатор строки parent
. Я не знаю, как это сделать (получите этот идентификатор) безопасно и portably и используя только один запрос. Подсказка: я скорее начинающий и не знаю императивного программирования SQL - просто в случае существует очевидное императивное решение.
Возможно, вам понадобится более одного оператора SQL, завернутого в одну транзакцию. – Stewart
2 Вставить в ту же транзакцию (1 для родителя, 1 для ребенка) –
Как получить идентификатор вставленной строки 'parent' надежно? Не могли бы вы предоставить конкретный код? Извините, если это глупый вопрос. –