我需要在PostgreSQL中插入一些行。但是在将行插入表之前,我应该使用update语句检查记录是否存在。如果update语句返回0行,则可以插入,否则可以跳过插入。我应该在PostgreSQL的。SQL文件中写SQL语句。
如何实现这一点?
在Oracle中,我们有如下格式:
declare
i number;
begin
update employees set status = 'fired' where name like '%Bloggs';
i := sql%rowcount;
IF i ==0 THEN
insert statement here
end
如何在Postgres中实现这一点?
如果并发性对您来说不是问题,并且您希望在plpgsql函数中完成它,不如使用特殊变量FOUND
:
DO
$do$
BEGIN
UPDATE employees SET status = 'fired' WHERE ... ;
IF NOT FOUND THEN
-- insert statement here
END IF;
END
$do$
或者使用数据修改CTE:
- 如果不存在则插入,否则在Netezza中更新
- 优化INSERT/UPDATE/DELETE操作
如果并发性是相关的,请阅读正确的UPSERT解决方案。
- 如何UPSERT (MERGE, INSERT…在PostgreSQL重复更新)?