为什么我的postgres约束名称后缀与标准不同?

问题描述 投票:0回答:1

在这个SO答案中: PostgreSQL:默认约束名称

看来我的外键(在创建表时未命名)应该默认为后缀

_fkey
... 但它似乎反而默认为后缀
_foreign
。这正常吗?

我担心创建一个迁移,我假设约束名称并且它在我的环境中工作,然后在其他地方中断......

有没有办法确保我在任何环境中正确引用约束?

更新信息:

  • posgres 版本:16.4

  • 创建密钥的客户端:knex

  • 使用的完整FK命令:

    table.foreign('userId').references('users.id')

  • psql 与 \d:

    很抱歉,但我不允许从我们的代码库发布代码,所以这里是经过编辑的:

Indexes:
    "***_pkey" PRIMARY KEY, btree (id)
    "***" UNIQUE CONSTRAINT, btree ("***Id", "***Id")
Foreign-key constraints:
    "***_***id_foreign" FOREIGN KEY ("***Id") REFERENCES ***(id)
    "***_userid_foreign" FOREIGN KEY ("userId") REFERENCES users(id)    <=== the column of interest
postgresql
1个回答
0
投票

https://knexjs.org/guide/schema-builder.html#foreign显示语法:

table.foreign(columns, [foreignKeyName])
[.onDelete(statement).onUpdate(statement).withKeyName(foreignKeyName).deferrable(type)]

这似乎显示了

foreign()
的可选参数,您可以使用它来指定约束名称。

我不是 knex 的用户,所以我不打算对此进行测试。尝试一下!

© www.soinside.com 2019 - 2024. All rights reserved.