使用adonis迁移/ Node.js的表中的多个主键

时间:2019-11-05 11:15:15

标签: node.js migration adonis.js

我有这张桌子:

BookUnit
-------------------
id PK
unit PK
sequence PK
book_id FK

因此,我可以记录数据:

id: 1
unit: 1
sequence: 1

id: 2
unit: 1
sequence: 2

我最多只能重复一次

id: 3
unit: 1
sequence: 2

因此,我需要创建一个包含id,sequence和unit的组合主键。

我这样尝试:

class BookUnitSchema extends Schema {
  up () {
    this.create('book_unit', (table) => {
      table.increments()
      table.integer('book_id').references('id').inTable('books').notNullable()
      table.integer('unit').notNullable().primary()
      table.integer('sequence').notNullable().primary()
      table.string('description')
      table.integer('qt_question')
      table.boolean('status').defaultTo(false)
      table.integer('user_id').references('id').inTable('users')
      table.timestamps()
    })
  }

  down () {
    this.drop('book_unit')
  }
}

但是我得到了:

  

错误:表“ book_unit”不允许使用多个主键

我在文档示例中找不到一个以上的主键...

2 个答案:

答案 0 :(得分:2)

很简单,我使用以下方法修复了

table.unique(['unit', 'sequence'])

答案 1 :(得分:1)

您还使用主要

table.primary(['unit','sequence'])

这对我有用
有关更多信息,请访问knex.js