Несколько первичных ключей в таблице с использованием миграции adonis / nodejs - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть эта таблица:

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

Итак, мне нужно создать составной первичный ключ с идентификатором, последовательностью и единицей.

Я пытаюсь так:

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 ]

2 голосов
/ 05 ноября 2019

Все просто, я исправил с помощью:

table.unique(['unit', 'sequence'])
1 голос
/ 05 ноября 2019

вы также используете основной

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

это работа для меня
Дополнительная информация посещение knex.js

...