2016-04-07 63 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需求應該可以。