postgresql - knex(postgres)引用另一个表中的列(不是唯一的)
问题描述
table_a
有一个名为 type 的常规列item_id
,int
目前没有索引。
table_b
有一个名为item_id
我想要引用的item_id
列table_a
所有这些通常都很好,但是,table_a.item_id
不能使用唯一索引约束进行设置,因为有些行包含相同的值。
当我无法设置唯一性时,如何table_b.item_id
创建要引用的外键映射?table_a.item_id
table_a.item_id
如何设置基于非唯一的索引以便映射关系?
解决方案
您不需要将 table_a 中的 item_id 标记为唯一的以使其成为外键。
await knex.schema.createTable('table_b', (t) => {
t.integer('item_id').unsigned().notNullable();
t.foreign('item_id')
.references(`table_a.item_id`)
.onDelete('cascade')
.onUpdate('cascade');
});
推荐阅读
- php - 将 php 变量传递到 Twig - 文档抛出错误
- python - 这个 Ruby 代码在 Python 中的等价物是什么?
- python - 过滤包含元组的列表列表
- javascript - 如何在查找 Javascript 文件时解决命令提示符中的 SQL ECONNREFUSED 错误?
- c - 多子部分加法的流程API
- r - 如何在ggplot方面按值排序数据
- node.js - 不一致 - “用于调用 Google Play Developer API 的项目 ID 尚未在 Google Play Developer Console 中链接。”
- symfony - empty_data 不适用于复合形式,或者实体没有被实例化(ArgumentCountError:函数的参数太少)
- reactjs - react: setstate 的可重用事件处理程序
- javascript - Vue DOM 更新不会在第一次点击中发生,在后续点击中有效