web-dev-qa-db-fra.com

Comment puis-je ajouter une clé primaire composite avec knex.js?

J'ai 2 tables. 1 Événements appelés avec un identifiant d'événement et une autre table appelée billets que je souhaite avoir des clés principales de l'ID d'événement et de l'ID de ticket. J'utilise également une base de données PostgreSQL. Pour le moment, je l'ai comme une clé étrangère, mais je voudrais l'avoir comme une clé primaire dans la table de billets avec l'ID de ticket.

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');
});
9
Coder1234

Dans votre cas, j'aurais quitté le champ Département existant comme clé principale et ajouté un index unique sur la clé étrangère après la création de la table.

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

Si vous voulez une clé composite, faites ceci:

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