web-dev-qa-db-ja.com

Knex.jsでコンポジット主キーを追加するにはどうすればよいですか?

私は2つのテーブルを持っています。 1つはイベントIDを持つイベントと呼ばれ、別のテーブルはチケットと呼ばれ、イベントIDとチケットIDの主キーが必要です。 PostgreSQLデータベースも使用しています。現時点では、外部キーとして使用していますが、チケットIDを持つチケットテーブルの主キーとして使用したいと考えています。

knex.schema.createTable('events', function (table) {
  table.increments('id');
  table.string('eventName');
});


knex.schema.createTable('tickets', function (table) {
  table.increments('id');
  table.string('ticketName');

  table.foreign('tickets').references('events_id').inTable('events');
});
4
Coder1234

あなたの場合、既存の増分フィールドを主キーとして残し、テーブルの作成後に外部キーに一意のインデックスを追加します。

knex.schema.alterTable('tickets', function(t) {
    t.unique(['events_id'])
})

複合キーが必要な場合は、次のようにします。

knex.schema.alterTable('tickets', function(t) {
    t.unique(['id','events_id'])
})
0
GaryL