我需要在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中实现这一目标?
答案 0 :(得分:1)
如果并发对您来说不是问题,并且您想在plpgsql函数中执行此操作,请使用特殊变量FOUND
:
DO
$do$
BEGIN
UPDATE employees SET status = 'fired' WHERE ... ;
IF NOT FOUND THEN
-- insert statement here
END IF;
END
$do$
或者使用数据修改CTE:
如果并发性相关,请阅读正确的UPSERT解决方案。