我有两张桌子
CREATE TABLE table1 (
id bigint NOT NULL,
name character varying(255),
CONSTRAINT table1_pkey PRIMARY KEY (id)
);
CREATE TABLE table2 (
id bigint NOT NULL,
name character varying(255),
table1_id bigint,
CONSTRAINT table2_pkey PRIMARY KEY (id),
CONSTRAINT fk_table1_table2 FOREIGN KEY (table1_id)
REFERENCES table1 (id) MATCH SIMPLE
);
现在我要做的是为table1中的每个条目添加table2中的条目
即如果我的表1有条目
|id | name |
|1 | First |
|2 | Second |
|3 | Third |
我需要在table2中创建三个条目
insert into table2 (id,name,table2_id) values (nextval('table2_seq'),'new entry', 1);
insert into table2 (id,name,table2_id) values (nextval('table2_seq'),'new entry', 2);
insert into table2 (id,name,table2_id) values (nextval('table2_seq'),'new entry', 3);
并且因为每个新条目只更改了外键,我想知道是否有可能自动执行此过程。 是否可以通过查询实现,还是应该查看过程?
答案 0 :(得分:3)
使用基于选择的插入:
insert into table2 (id,name,table1_id)
select nextval('table2_seq'), 'new entry', t1.id
from table1;
答案 1 :(得分:0)
我努力在子查询中获得“SELECT ... WHERE”,可能咖啡不够,但最终确定了以下语法:
insert into table (col1, col2 ...)
select 'staticval1',
r.variable1 from reftable r where r.variable2 = 'Some search term'
...;