我需要在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"}'
}
如果partition
和data
与v2
记录相同,我什么也不做。在任何其他情况下,我都应添加一个max + 1
版本的新记录。