我有这张桌子:
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”不允许使用多个主键
我在文档示例中找不到一个以上的主键...
答案 0 :(得分:2)
很简单,我使用以下方法修复了
table.unique(['unit', 'sequence'])
答案 1 :(得分:1)