2015-07-29 18 views
6

Tôi muốn thêm cột qua di chuyển sau một cột nhất định cũng chỉ mục đó (Chỉ mục mysql thông thường không phải chỉ mục duy nhất). Điều này có thể thông qua sequelize.js thông qua di chuyển hay không. Nếu có, làm thế nào và nếu không có bất kỳ lựa chọn thay thế cho điều này thông qua di cư.Di chuyển Thêm Cột sau cột và cột chỉ mục được chỉ định

Chúng tôi có thể thực hiện truy vấn tùy chỉnh trong việc di chuyển tiếp theo hay không.

Dưới đây là tệp di chuyển hiện tại của tôi.

'use strict'; 

module.exports = { 
    up: function (queryInterface, Sequelize) { 
    return queryInterface.addColumn('UserDetails', 'user_id', { 
     type: Sequelize.INTEGER, 
    }); 
    }, 

    down: function (queryInterface, Sequelize) { 
    return queryInterface.removeColumn('UserDetails', 'user_id'); 
    } 
}; 

Trả lời

1

Theo như tôi biết không có cách nào để thực hiện thông qua chức năng addColumn.

Nhưng bạn có thể làm điều đó thông qua truy vấn SQL liệu:

ALTER TABLE UserDetails CHANGE COLUMN user_id user_id VARCHAR(50) AFTER some_column; 

Bạn có thể chạy các truy vấn SQL tùy biến trong cuộc di cư như thế này:

module.exports = { 
    up: function(queryInterface, Sequelize) { 
    return queryInterface.sequelize.query("ALTER TABLE UserDetails CHANGE COLUMN user_id user_id VARCHAR(50) AFTER some_column;") 
    }, 
    down: function(queryInterface, Sequelize) { 
    return true; 
    } 
}; 

Vì bạn đang sử dụng SQL tùy chỉnh bạn có thể thêm cột mới qua SQL thô và đặt nó sau cột bạn đã chọn:

ALTER TABLE UserDetails ADD COLUMN user_id VARCHAR(50) AFTER some_column; 
13

Bạn có thể vượt qua after hoặc before trong các tùy chọn để thêm cột sau một số cột được chỉ định.

'use strict'; 

module.exports = { 
up: function (queryInterface, Sequelize) { 
return queryInterface.addColumn('UserDetails', 'user_id', { 
    type: Sequelize.INTEGER, 
    after: "some_column" 
}); 
}, 

down: function (queryInterface, Sequelize) { 
return queryInterface.removeColumn('UserDetails', 'user_id'); 
} 
}; 
+0

Hoàn toàn hoạt động, cảm ơn. –

+2

Điều này phải được chấp nhận làm câu trả lời đúng. –

+1

Phiên bản nào của Sequelize này hoạt động? Tôi đang sử dụng phiên bản CLI 3.9.1 và có vẻ như nó không hoạt động. –

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