我尝试在Sequelize中编写迁移,并希望删除defaultValue约束。正确的语法是什么?我尝试了以下两种方法:
return queryInterface.removeConstraint('Table', 'table_columnName_default') return queryInterface.removeConstraint('Table', 'columnName_default')
zqdjd7g91#
你能试着用
return queryInterface.changeColumn('Table', 'attributeName', { defaultValue: null, allowNull: true, });
http://docs.sequelizejs.com/class/lib/query-interface.js~QueryInterface.html#instance-method-changeColumn
xxb16uws2#
您也可以使用原始查询:
return queryInterface.sequelize.query(`ALTER TABLE table ALTER COLUMN column DROP DEFAULT;`)
ki0zmccv3#
你应该知道数据类型。例如STRING:
STRING
const { DataTypes } = require('sequelize'); return queryInterface.changeColumn('Table', 'attributeName', { defaultValue: null, type: DataTypes.STRING });
你也可以从model定义中使用queryInterface(或者传递模型/查询接口),使其对于任何具有默认值的列都是通用的:
model
queryInterface
function dropDefaults(queryInterface, model) { const defaultValues = Object.keys(model._defaultValues); for (const column of defaultValues) { model.queryInterface.changeColumn(model.tableName, column, { defaultValue: null, type: model.fieldRawAttributesMap[column].type, }); } }
3条答案
按热度按时间zqdjd7g91#
你能试着用
http://docs.sequelizejs.com/class/lib/query-interface.js~QueryInterface.html#instance-method-changeColumn
xxb16uws2#
您也可以使用原始查询:
ki0zmccv3#
你应该知道数据类型。例如
STRING
:你也可以从
model
定义中使用queryInterface
(或者传递模型/查询接口),使其对于任何具有默认值的列都是通用的: