2016-04-07 26 views
5

Có thể bắt buộc cắt một bảng có ràng buộc khóa ngoài sao cho tất cả các hàng trong các bảng khác cũng bị loại bỏ không?Bảng cắt Knex có các ràng buộc khóa ngoài

Tôi không thể thấy trong tài liệu về tùy chọn chuyển sang phương thức knex('tableName').truncate().

Trả lời

4

tôi đã không tìm thấy một xây dựng theo cách để làm điều đó, vì vậy tôi chỉ cần thả vào chế độ thô:

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

Bạn cũng có thể thiết lập này xảy ra tự động trong cuộc di cư của bạn:

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

Hiện tại có một phương pháp truncate() trong Knexjs.

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

Có thể không hoạt động trong mọi trường hợp, nhưng phải phù hợp với nhu cầu cắt ngắn cơ bản.

Các vấn đề liên quan