【问题标题】:knex (postgres) referencing a column (not unique) in another tableknex(postgres)引用另一个表中的列(不是唯一的)
【发布时间】:2020-08-16 15:10:14
【问题描述】:

table_a 有一个名为item_id 的常规列,其类型为int,目前未编制索引。 table_b 有一个名为item_id 的列,我想在table_a 中引用item_id

所有这些通常都可以,但是,table_a.item_id 无法设置唯一索引约束,因为有些行包含相同的值。

当我无法将table_a.item_id 设置为唯一时,table_b.item_id 如何创建一个外键映射来引用table_a.item_id

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

【问题讨论】:

    标签: postgresql knex.js


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我尝试了您的建议,但仍然无法正常工作。迁移总是以相同的响应失败:“没有唯一约束匹配给定键的引用表”
    • 这很奇怪,尝试添加其他列作为索引
    • 是的,我听到了。让我回顾一下架构。感谢您的及时回复?
    猜你喜欢
    • 2021-05-08
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多