postgresql - 将 VIEW 表列作为参考
问题描述
当前设置:
我正在使用 PostgreSQL、node js 和 KNEX。
存在两个表,active(task_active) 和 inactive(task_inactive),inactive 由散列分区。还有一个统一两个表的视图(任务)和一个在任务完成时将行从活动移动到非活动的工作人员。
现在,我想在另一个表 (diff) 中使用 View id 作为外键。
import * as Knex from "knex";
export async function up(knex: Knex): Promise<any> {
await (knex.schema.createTable("diff", (t) => {
t.increments("id");
t.boolean("numeric_change_value");
t.boolean("string_change_value");
t.integer("report_pair_id")
.notNullable()
.references("id")
.inTable("task")
.onDelete("CASCADE");
}) as PromiseLike<any>);
}
export async function down(knex: Knex): Promise<any> {
await knex.schema.dropTable("diff");
}
我收到了错误task is not a table
,这个错误是正确的,因为任务就是视图。那么,有没有办法引用视图列或任何其他方法来将新表(差异)附加到任务表?如果有人有使用 SQL、MY-SQL 的解决方案,那将会很有帮助。我可以将这些查询作为我的解决方案的参考。
解决方案
推荐阅读
- r - LDA 不能区分多个主题 - 出了什么问题?
- sql - 如何在 PostgreSQL 中标记列值的更改
- php - 如何教 PhpStorm 生成与项目结构相对应的完全限定类名,反之亦然
- sql - 删除具有多个条件的多列重复记录
- sql - 在选择查询中使用 DB-API 替换列名时,我没有得到预期值而是列名
- css - 所有网络浏览器和移动设备都支持的字体
- angular - 用于 Angular 7 的谷歌云应用程序 yaml
- aws-lambda - 如何从 SQS 触发器中获取单条记录?
- amazon-web-services - 将 pem 私有密钥添加到 AWS KMS
- reactjs - 如何在 React 4 应用程序中使用 bootstrap.min.js