我只是注意到 PostgreSQL 允许在数据库中重复外键(可能还有其他约束)名称,只要它们在不同的表上即可。
因此,如果父表是Foo
并且它有两个子表BarX
并且BarY
,则可以命名两个表上的外键FK_fooid
。
IMO,这是一个糟糕的设计,因为
select * from information_schema.referential_constraints
where constraint_name = 'FK_fooid'
将返回两个相同的行,无法区分哪一个对应于哪个表/键。
有没有办法在 Postgres 中禁用跨数据库的约束名称重复并强制每个约束具有唯一名称?
然后不要使用
information_schema
:示例:http ://rextester.com/DAR30737