sequelize检查表是否已创建

时间:2014-10-27 13:08:21

标签: postgresql sequelize.js

我正在使用sequelize和postgres数据库,我有时会在运行时创建表。它通常有效,但我想知道是否有可能检查数据库中是否已存在表。我知道sequelize使用的是像#34; CREATE TABLE IF NOT NOT EXITS ...",但我想在我的代码中知道表是否存在?

有什么想法吗?也许在define模型的sync方法中?

1 个答案:

答案 0 :(得分:2)

一种非常简单的方法:

SELECT 1 FROM schema_name.table_name LIMIT 0;

如果表不存在,则引发异常。 schema_name是可选的。如果省略,则默认为" current" schema,search_path中的第一个模式。

或者:

SELECT 'schema_name.table_name'::regclass;

如果名称尚未使用,则会引发异常(常规表,序列,视图,物化视图,复合类型或TOAST表)。

或者,您可以查询系统目录或统一信息模式,以便在不引发异常的情况下查找:

SELECT EXISTS (
    SELECT 1 
    FROM   pg_catalog.pg_class c
    JOIN   pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE  n.nspname = 'schema_name'
    AND    c.relname = 'table_name'
    AND    c.relkind = 'r'    -- only tables ...(?)
);

相关答案更多详情: