Postgres事务使用UPDATE而不是INSERT如果已存在行

时间:2012-04-25 22:33:58

标签: postgresql stored-procedures transactions postgresql-9.1

Postgres新手的一个简单问题:

如何编写类似

的Postgres交易
IF SELECT COUNT(*) FROM myTable WHERE myPK = myValue > 0 THEN
UPDATE myTable ...
ELSE
INSERT INTO myTable...
END

我希望这可以解决我的网络应用程序中的错误,当我能够从SELECT COUNT(*)来确定是否应该更新或插入时,myTable上发生了另一次插入。

1 个答案:

答案 0 :(得分:3)

在Postgresql的文档中有一个示例plpgsql实现:请参阅merge_db

它专门用于支持并发更新或插入(通常称为UPSERT)。