首页 > 解决方案 > 在 knex 迁移中添加和删除约束

问题描述

我正在尝试在upknex 迁移的部分中添加一个约束,然后在该部分中重新添加该约束(撤消更改)down。我想保留表格及其所有列,但从其中一列中删除uniqueindex约束。这是我到目前为止所拥有的:

exports.up = function(knex) {
    return knex.schema
        .table('menuItems', tbl => {
            tbl.dropUnique("itemName")
            tbl.dropIndex("itemName") 
   // ^these will leave the column but remove the constraints,
   // correct?
        });
};

exports.down = function(knex) {
  // What do I do here?
};

假设在我当前的up中,我确实只是删除了约束down而不是列,我的问题是:如何在不创建新列的情况下将约束添加回现有列(在 中)?

(我对 knex 迁移非常不满意,而且我在网上找不到示例,所以如果有人有一些基本迁移的完整示例的链接,那也可能对我有帮助。)

标签: postgresqlknex.js

解决方案


实际上,您正在正确地删除约束up!在您的down函数中,您可以使用以下语法向表添加约束:

exports.up = function(knex) {
    return knex.schema
        .table('menuItems', tbl => {
            tbl.unique('itemName');
            tbl.index('itemName');
        })
};

查看Schema IndexSchema Unique文档以获取更多信息!


推荐阅读