postgresql - Sequelize 检查表是否已创建

标签 postgresql sequelize.js

我正在使用sequelize,其背后有一个postgres数据库,有时我需要在运行时创建表。它通常可以工作,但我想知道是否可以检查数据库中是否已存在表。我知道sequelize正在使用类似“CREATE TABLE IF NOT EXITS ...”之类的东西,但我想知道在我的代码中该表是否存在?

有什么想法吗?也许在定义模型的同步方法中?

最佳答案

一个非常简单的方法:

SELECT 1 FROM schema_name.table_name LIMIT 0;

如果表不存在则引发异常。 schema_name 是可选的。如果省略,则默认为“当前”模式,即 search_path 中的第一个模式。 .

或者:

SELECT 'schema_name.table_name'::regclass;

如果根本没有使用该名称(常规表、序列、 View 、物化 View 、复合类型或 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 ...(?)
);

更多详细信息的相关答案:

关于postgresql - Sequelize 检查表是否已创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588309/

相关文章:

postgresql - SequelizeConnectionError 无法连接到数据库

javascript - 如何从迁移生成 Sequelize 模型?

javascript - Sequelize sqlite3连接到数据库但在获取数据时抛出错误

sql - PostgreSQL,在存储过程中存储多个变量

sql - 使用 SQL 逻辑 'OR' 和运算符 'LIKE' 时,如何调整 PostgreSQL 查询优化器?

sql - 无需客户端请求的自动 Heroku PostgreSQL 更新

sql - 错误 : Id must appear in group by clause, PostgreSQL?

node.js - 在 Sequelize 查找方法的 where 条件中使用列别名时出错

node.js - Sequelize 无法创建新表

node.js - 依赖链 : category -> shop => category in model sequelizejs while defining foreign key