Вот сценарий:Вставить вставить идентификатор в другую таблицу
create table a (
id serial primary key,
val text
);
create table b (
id serial primary key,
a_id integer references a(id)
);
create rule a_inserted as on insert to a do also insert into b (a_id) values (new.id);
Я пытаюсь создать запись в b
ссылающийся на a
при вставке в a
таблице. Но я получаю, что new.id
имеет значение NULL, поскольку он автоматически генерируется из последовательности. Я также попробовал спусковой крючок AFTER
вставить FOR EACH ROW
, но результат был тот же. Любой способ справиться с этим?
Он отлично работает со мной: http://sqlfiddle.com/#!15/bdd7b/1 может быть это связано с версией Ot вашей БД. У меня нет знаний о postgresql –
@ Blood-HaZaRd это работает, потому что вы действительно вставили id, фактический случай заключается в том, что идентификатор автоматически сгенерирован 'DEFAULT next_val ('sequence_name')' и не переходит в NEW, поскольку новый определяет входные значения, потому что правило происходит ** перед ** фактической вставкой (whitch означает, что идентификатор еще не создан). Попробуйте вставить это в свой скрипт «вставить в значения (« Буджа »);' –