如果外键存在就插入PostgreSQL

9
如何仅在外键(在此情况下为模型)存在时插入带有外键引用的新行?
目前,我有以下语句:
INSERT INTO furniture (model, type) VALUES (modelA, chair)

4
"WHERE EXISTS (SELECT * FROM models WHERE model = modelA)" 的意思是“如果存在一个模型为modelA的记录,则执行此操作”。 - joop
1个回答

12

如果外键不存在,请使用SELECT返回空结果集。

INSERT INTO furniture (model, type) 
select 'modelA', 'chair'
where exists (select * 
              from model 
              where model.model = 'modelA');
您没有告诉我们所引用的表格叫什么。 我假设它是model - 您需要将其调整为实际名称。

您没有告诉我们所引用的表格叫什么。我假设它是model - 您需要将其调整为实际名称。


您可能还想将锁定添加到 exists 子句中,以避免竞争条件。请参见:https://dba.stackexchange.com/a/252925 - ievgen.garkusha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接