2016-04-07 66 views
5

是否有可能强制截断带有外键约束的表,以便其他表受影响的所有行也被删除?Knex截断带外键约束的表

我不能在文档中看到传递给knex('tableName').truncate()方法的选项。

回答

4

我还没有发现一个内置的方式做到这一点,所以我只是放到原始模式:

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

您也可以将此设为您的迁移自动发生:

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

Knexjs中现在有一个truncate()方法。

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

可能不适用于所有情况,但对于基本truncate需求应该可以。