假设我们有两张table:
flight segmment
| name | type | | name | type |
|-------------|------| |-------------|------|
| origin | text | | origin | text |
| destination | text | | destination | text |
| flight_id | int |
其中关系为一对多(一个航班可以有多个航段)。
我想知道是否有一种方法可以在保持关系的同时批量插入许多行?
这是我目前的方法,但可能没有得到优化:从这里的文档来看,我使用的方法是:
INSERT INTO flight (origin, destination) VALUES
('PAR', 'LON'), -- returning id: 1
('PAR', 'BKK'), -- returning id: 2
('PAR', 'DPS'); -- returning id: 3
我使用上述请求插入多个航班,并返回所有航班的id。然后通过编程的方式更新我的段,然后用航班ID插入它们。最后,我使用与航班相同的方法插入每个片段。
我将以第二个请求结束,这个请求看起来像:
INSERT INTO segment (origin, destination, flight_id) VALUES
('PAR', 'LON', 1),
('PAR', 'AMS', 2),
('AMS', 'BKK', 2),
('PAR', 'IST', 3),
('IST', 'DPS', 3);
第二个问题是这种关系是一对多的,所以有些方法(在一个表和多对多表中插入多个,使用postgres一次在3个表中插入数据,或者如何使用returning with on conflict in postgresql?)似乎不是我的用例,因为我想批量插入多个航班和多个具有一对多关系的段。
有没有办法只用一个查询就可以做到这一点?
暂无答案!
目前还没有任何答案,快来回答吧!