在这个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
https://knexjs.org/guide/schema-builder.html#foreign显示语法:
table.foreign(columns, [foreignKeyName])
[.onDelete(statement).onUpdate(statement).withKeyName(foreignKeyName).deferrable(type)]
这似乎显示了
foreign()
的可选参数,您可以使用它来指定约束名称。
我不是 knex 的用户,所以我不打算对此进行测试。尝试一下!