这是场景:
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引用记录。但是我得到的是null,因为它是自动从序列中生成的。我也尝试了触发器插入,但是结果是一样的。有什么办法解决吗?a``a``new.id``AFTER``FOR EACH ROW
b
a``a``new.id``AFTER``FOR EACH ROW
避免使用规则,因为它们会再次咬住您。
在每行运行的表a上使用after触发器。它看起来应该像这样(未经测试):
create function a_ins() returns trigger as $$ begin insert into b (a_id) values (new.id); return null; end; $$ language plpgsql; create trigger a_ins after insert on a for each row execute procedure a_ins();