【发布时间】:2021-10-16 22:05:57
【问题描述】:
我必须在几个表的来源中插入数据,这些表本身来自 csv (COPY)。
在我在函数中使用LOOP 输入数据之前。为了可维护性和速度,我想简化这件事。
我需要将数据插入到描述表中,该表既是标题又是描述(以及多语言)。
以前我的代码如下(从循环中提取):
insert into description (label, lang_id, poi_id,date_dernier_update, date_enregistrementbdd, date_derniere_lecture) values (label, lang_id, poi_id, now(), now(), now()) RETURNING id INTO _retour_id_titre;
insert into poi_titre_poi (poi_id, titre_poi_id, titre_poi_key) values (poi_id, _retour_id_titre, label_lang);
但现在我不能:
with rows as (
insert into description (label, lang_id, poi_id)
select rdfslabelfrs, '1', (select id from poi where uri_id = csv_poi_rdf_fr.poi) as toto from csv_poi_rdf_fr RETURNING id
)
insert into poi_titre_poi (poi_id, titre_poi_id, titre_poi_key)
select description.poi_id, id , 'fr'
FROM description;
事实上,我无法在“poi_titre_poi”表中插入“poi_id”,该表对应于在描述表中插入的那个。
我收到此错误消息:
ERROR: more than one row returned by a subquery used as an expression État SQL : 21000
我可以完成这项工作,还是需要循环?
【问题讨论】:
标签: sql postgresql insert common-table-expression