首页 > 解决方案 > knex(postgres)引用另一个表中的列(不是唯一的)

问题描述

table_a有一个名为 type 的常规列item_idint目前没有索引。 table_b有一个名为item_id我想要引用的item_idtable_a

所有这些通常都很好,但是,table_a.item_id不能使用唯一索引约束进行设置,因为有些行包含相同的值。

当我无法设置唯一性时,如何table_b.item_id创建要引用的外键映射?table_a.item_idtable_a.item_id

如何设置基于非唯一的索引以便映射关系?

标签: postgresqlknex.js

解决方案


您不需要将 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');
});


推荐阅读