Sud*_*esh 7 mysql node.js sequelize.js
我希望在某个列之后通过迁移添加列也将其编入索引(正常的mysql索引不是唯一索引).这可以通过sequelize.js通过迁移实现.如果是,如何以及如果没有任何替代方案通过迁移.
我们可以在续集迁移中执行自定义查询吗?
以下是我现有的迁移文件.
'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');
}
};
Run Code Online (Sandbox Code Playgroud)
Viv*_*edi 30
您可以传递after或before在选项中添加一些指定列之后的列.
'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');
}
};
Run Code Online (Sandbox Code Playgroud)
据我所知,没有办法通过addColumn函数来做到这一点。
但你可以通过原始 SQL 查询来完成:
ALTER TABLE UserDetails CHANGE COLUMN user_id user_id VARCHAR(50) AFTER some_column;
Run Code Online (Sandbox Code Playgroud)
您可以在迁移中运行自定义 SQL 查询,如下所示:
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;
}
};
Run Code Online (Sandbox Code Playgroud)
由于您已经在使用自定义 SQL,因此您可以通过原始 SQL 添加新列并将其放在您选择的列之后:
ALTER TABLE UserDetails ADD COLUMN user_id VARCHAR(50) AFTER some_column;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6146 次 |
| 最近记录: |