2016-04-07 21 views
5

È possibile forzare il troncamento di una tabella con vincoli di chiave esterna in modo che anche tutte le righe nelle altre tabelle siano state rimosse?Tabella troncata Knex con vincoli di chiave esterna

Non riesco a vedere nella documentazione l'opzione per passare al metodo knex('tableName').truncate().

risposta

4

non ho trovato una costruito in modo per farlo, quindi ho solo cadere in modalità raw:

knex.raw('TRUNCATE TABLE users, products CASCADE') 

È inoltre possibile impostare questa avvenga automaticamente nei migrazioni:

exports.up = function(knex) { 
    return knex.schema.createTable('users_products', (t) => { 
     t.uuid('id').primary().defaultTo(knex.raw('uuid_generate_v4()')); 
     t.uuid('user_id').notNullable().references('id').inTable('users').onDelete('CASCADE'); 
     t.uuid('product_id').notNullable().references('id').inTable('products').onDelete('CASCADE'); 
    }); 
}; 
-2

Esiste ora un metodo truncate() in Knexjs.

knex('accounts').truncate() 
Outputs: 
truncate `accounts` 

Potrebbe non funzionare per tutti i casi, ma dovrebbe essere OK per esigenze di troncamento di base.