Sequelize Migration删除主键

时间:2016-07-13 08:18:16

标签: node.js sequelize.js

我正在阅读sequelize文档,我不确定是否有办法删除列上的主键约束。

以下是最相关的链接: http://docs.sequelizejs.com/en/latest/docs/migrations/#changecolumntablename-attributename-datatypeoroptions-options

4 个答案:

答案 0 :(得分:1)

对我有用的是放弃sql,不确定我做错了什么,但我尝试的其他任何东西似乎都没有用。

来自:https://github.com/sequelize/sequelize/issues/313

up: function (queryInterface, Sequelize) {
    return queryInterface.sequelize.query('ALTER TABLE my_table DROP PRIMARY KEY');
}

答案 1 :(得分:0)

是的,使用changeColumn并提供一个完整的新列定义(与原始列相同),但没有主键。

答案 2 :(得分:0)

以下代码将删除表的主键:

up: function (queryInterface, Sequelize) {
    return queryInterface.removeConstraint('table_name', 'PRIMARY');
}

,这消除了外键之类的约束:

up: function (queryInterface, Sequelize) {
    return queryInterface.removeConstraint('table_name', 'constraint_name');
}

答案 3 :(得分:0)

示例代码:

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.removeConstraint('myTable', 'myTable_pkey'); // myTable_pkey = name of constraint
  },

  down: (queryInterface, Sequelize) => {
    return queryInterface.addConstraint('myTable', {
      fields: ['id'],
      type: 'primary key',
      name: 'myTable_pkey'
    });
  }
};