一尘不染

将插入的ID插入另一个表

sql

这是场景:

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


阅读 251

收藏
2021-05-05

共1个答案

一尘不染

避免使用规则,因为它们会再次咬住您。

在每行运行的表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();
2021-05-05