如何按名称查找约束

时间:2015-10-01 14:01:48

标签: sql postgresql

我有相当大的数据库(Postgresql 9.3),有大量的表,约束等。有些表和约束是自动生成的(有些查询也会自动生成)。

最近我发现在某些时候存在问题 - 其中一个巨大的查询违反了一个约束条件。

我的问题是:如果我使用SQL知道它的名字,我怎么能轻松找到约束的定义?

1 个答案:

答案 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'