postgresql - 在 knex 迁移中添加和删除约束
问题描述
我正在尝试在up
knex 迁移的部分中添加一个约束,然后在该部分中重新添加该约束(撤消更改)down
。我想保留表格及其所有列,但从其中一列中删除unique
和index
约束。这是我到目前为止所拥有的:
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 迁移非常不满意,而且我在网上找不到示例,所以如果有人有一些基本迁移的完整示例的链接,那也可能对我有帮助。)
解决方案
实际上,您正在正确地删除约束up
!在您的down
函数中,您可以使用以下语法向表添加约束:
exports.up = function(knex) {
return knex.schema
.table('menuItems', tbl => {
tbl.unique('itemName');
tbl.index('itemName');
})
};
查看Schema Index和Schema Unique文档以获取更多信息!
推荐阅读
- mysql - 如果我们可以为唯一索引设置空值,那么查询的持续时间是否更短?
- angular - 如何知道 observable 是否正在加载或 Angular 模板中是否存在错误?
- file - 无法在颤动中加载资源
- python - 在等待用户输入时运行循环
- python - 用 group by 填充另一个数据帧中的 NaN
- objective-c - 我对 App Store 框架分布和 cocoa-pods 框架分布有疑问
- python-3.x - 如何从 amazon s3 加载模板文件并将其加载到 openpyxl 工作簿中
- angular - 如何动态更改网址
- docker - 我在哪里可以找到 DockerCli.exe
- reactjs - 我如何在 React js 中优化 td