如果在PostgreSQL中多次插入之前存在?

时间:2015-07-16 15:23:57

标签: postgresql insert

我想仅在表存在时才插入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中存在表时才能插入?

2 个答案:

答案 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参数功能开始)。这证实了存在并同时逃避了可能的非标准语法: