Postgres普通查询中的逻辑

时间:2020-11-11 15:36:40

标签: sql postgresql

我需要在Postgres中进行查询,如果现有数据包含无效数据,则会插入新项目。我想做这样的事情

if not exists( select * from table where field='value ) then
    insert into ...
end if;

我可以不用功能吗?

UPD 这是桌子

create table if not exists test_md (
    id          serial  not null,
    partition   text    not null,
    version     int     not null,
    data        jsonb   not null,
    
    primary key (partition, version)
);

这里有一些数据

insert into test_md(partition, version, data) 
values
    ('part one', 1, '{"k1": "v1", "k2": "v2"}')
    ('part one', 2, '{"k1": "v1", "k2": "v2"}')
    ('part two', 4, '{"k1": "v1", "k2": "v2"}')
    ('part two', 5, '{"k1": "v1", "k2": "v2"}')
;

例如,我要插入数据集

{
    'partition': 'part one', 
    'data':      '{"k1": "v1", "k2": "v2"}'
}

如果partitiondatav2记录相同,我什么也不做。在任何其他情况下,我都应添加一个max + 1版本的新记录。

0 个答案:

没有答案