我有一堆插入语句,它们的各自表格具有不同数量的列,如果记录不存在,我需要执行这些查询。我尝试将其实现为:
尽管上述代码确实有效,但要针对大量查询进行实现需要很多时间,因此我考虑制作一个存储过程,以便能够调用它。
但我无法直接执行插入查询。
但是我收到一个错误,显示:
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')")
但是我收到一个错误,显示:
列"insert into gst_type_customer(name) values('Unregistered')"不存在
INSERT INTO xxx SELECT ... values to be inserted ... WHERE NOT EXISTS (SELECT * FROM xxx WHERE ... existence condition...)
这个怎么样? - Roman Hocke