sql—批插入一对多

ffscu2ro  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(145)

假设我们有两张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?)似乎不是我的用例,因为我想批量插入多个航班和多个具有一对多关系的段。
有没有办法只用一个查询就可以做到这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题