【发布时间】:2012-08-28 10:56:51
【问题描述】:
如果条目不存在,我想将数据插入到多个表中。
就我而言,我有一张餐厅桌、一张位置桌、一张foodtype 桌和一些辅助桌,例如restaurant_location 和restaurant_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 来做到这一点?
【问题讨论】:
-
没有插入多个表的“简单”SQL 查询。但它很容易在 plpgsql 中的过程代码中完成,这看起来很像问题中的伪代码。如果由于某种原因您不能使用它,欢迎提供有关上下文的更多信息。
-
8.1 已经不支持很久了。你应该现在升级,真的。
-
@DanielVérité:嗯,从 Postgres 9.1 开始,它可以通过使用数据修改 CTE 的“简单”SQL 语句来完成。我发布了一个例子。
标签: sql postgresql common-table-expression sql-insert