我有一堆插入语句,其列表的列数各不相同,如果记录不存在,我需要执行这些查询。我试图将其作为在postgresql中插入或更新9.1
do $$
begin
IF not exists (SELECT 1 FROM gst_type_customer WHERE name = 'Unregistered') THEN
insert into gst_type_customer(create_date,write_date,create_uid,write_uid,name) values((now() at time zone 'UTC'),(now() at time zone 'UTC'),1,1,'Unregistered');
END IF;
end
$$
即使上面的代码不工作,虽然实现了批量查询,将需要大量的时间,所以我想制作一个存储过程,我可以打电话为
merge_check(insertquery,name[column to check for duplication],value)
的,但我无法直接执行插入查询。
到目前为止,我还拿出
CREATE OR REPLACE FUNCTION merge_tabla(data text)
RETURNS void AS
$BODY$
BEGIN
execute(data);
END;
$BODY$
LANGUAGE plpgsql
select merge_table("insert into gst_type_customer(name) values('Unregistered')")
,但我得到一个错误说
列 “插入gst_type_customer(名称)VALUES( '未注册')” 不存在
INSERT INTO xxx SELECT ...要插入的值... WHERE NOT EXISTS(SELECT * FROM xxx WHERE ... exists condition ...)'? –
感谢您的回复, –
感谢您的回复,是不是像上面的代码检查,如果它不存在,那么它插入,该代码段工作正常,可以给我一个例子,如果我我不理解。 –