仅当 PostgreSQL 中不存在表时,如何创建表?

Cod*_*e K -2 postgresql table postgresql-10

这是在PostgreSQL中创建新表的方法,

CREATE TABLE foo (
    foo_id  int   PRIMARY KEY,
    bar     text,
);
Run Code Online (Sandbox Code Playgroud)

如果需要检查该表是否已存在并CREATE仅在未找到时继续处理,我该如何执行此操作?

Eva*_*oll 7

它需要检查表是否已经存在,只有在没有找到时才创建?

根本没有符合标准的方法,但是 PostgreSQL 9.1+ 支持带有IF NOT EXISTS子句的通用扩展,

CREATE TABLE IF NOT EXISTS foo (
  foo_id int PRIMARY KEY
);
Run Code Online (Sandbox Code Playgroud)

如果表(foo在这种情况下)不存在,你只会得到一个NOTICE(不是一个ERROR

注意:关系“foo”已经存在,跳过

注意:虽然 DDLIF NOT EXISTS语法是非标准的,但其他数据库如MySQL可能也支持它,并且 SQL Server 的事务 SQL 支持它的变体IF NOT EXISTS (query) ... DDL ... GO