小编典典

如果条目不存在,可在PostgreSQL中进行多次插入

sql

如果条目不存在,我想将数据插入多个表中。

就我而言,我有一个餐厅表,一个位置表,一个foodtype表以及一些辅助表,例如restaurant_locationrestaurant_foodtype。现在,我想插入一个新的餐厅条目,其中包含位置和食物类型信息(如果该条目不存在)。

所以像这样:

IF NOT (select 1 from restaurant where name='restaurantname') THEN
 INSERT INTO restaurant(x,y) VALUES (valuex,valuey);
 INSERT INTO restaurant_location(rest_id,..) VALUES (rest_id,..);
 INSERT INTO restaurant_foodtype(rest_id,..) VALUES (rest_id,..);
 ...
END IF

如何使用简单的SQL执行此操作?


阅读 163

收藏
2021-04-28

共1个答案

小编典典

我只是在脑海中写下了这个,但是如果您必须使用简单的sql来做的话,这应该是个主意。

insert into 
    restaurant(x, y)
values
    select valuex, valuey 
    from dual
    where
      not exists(
        select 1 from restaurant where name = 'restaurantname')

编辑: 同样,我无法解析它,但您可能可以使用WITH子句:

with validation as(
  select 1 from restaurant where name = 'restaurantname'
)
insert into 
    restaurant(x, y)
values
    (
     select value1x, value1y 
     from dual
     where
       validation.v = 1),
    (
     select value2x, value2y 
     from dual
     where
       validation.v = 1)
2021-04-28