Rim*_*ius 2 sql postgresql triggers entity-relationship primary-key
这是场景:
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);
Run Code Online (Sandbox Code Playgroud)
b我正在尝试创建一条引用a插入表时的记录a。但我得到的是new.idnull,因为它是从序列自动生成的。我也尝试了触发器AFTER插入FOR EACH ROW,但结果是相同的。有办法解决这个问题吗?
为了简单起见,您还可以只使用数据修改 CTE(并且没有触发器或规则):
WITH ins_a AS (
INSERT INTO a(val)
VALUES ('foo')
RETURNING a_id
)
INSERT INTO b(a_id)
SELECT a_id
FROM ins_a
RETURNING b.*; -- last line optional if you need the values in return
Run Code Online (Sandbox Code Playgroud)
具有更多详细信息的相关答案:
或者您可以使用currval()andlastval():
| 归档时间: |
|
| 查看次数: |
5742 次 |
| 最近记录: |