我想仅在表存在时才插入INSERT。 伪代码
IF EXISTS TABLE file_headers(
INSERT INTO file_headers
(measurement_id, file_header_index_start, file_header_index_end)
VALUES (1, 1, 100);
INSERT INTO file_headers
(measurement_id, file_header_index_start, file_header_index_end)
VALUES (1, 2, 100);
... -- many INSERTs into same table
);
只有在PostgreSQL中存在表时才能插入?
答案 0 :(得分:2)
do $$begin
if exists (select * from pg_catalog.pg_tables where tablename = 'mytable') then
insert into mytable (col1) values (1);
end if;
end$$;
答案 1 :(得分:1)
如果您想将表名传递给动态执行的函数,那么此测试是有意义的。
有一个内置的解决方案:如果您想确保该表存在,请将其强制转换为 regclass
(或使用regclass
参数功能开始)。这证实了存在并同时逃避了可能的非标准语法: