我有相当大的数据库(Postgresql 9.3),有大量的表,约束等。有些表和约束是自动生成的(有些查询也会自动生成)。
最近我发现在某些时候存在问题 - 其中一个巨大的查询违反了一个约束条件。
我的问题是:如果我使用SQL知道它的名字,我怎么能轻松找到约束的定义?
答案 0 :(得分:1)
错误消息包含违反的约束,使用该名称,您可以轻松检索该约束的定义:
e.g。如果违反的约束名为orders_customer_id_fkey
,则以下内容显示该约束:
select pg_get_constraintdef(c.oid, true)
from pg_constraint c
join pg_namespace n on n.oid = c.connamespace
where conname = 'orders_customer_id_fkey'
and n.nspname = 'public'