【问题标题】:Postgres retrieve name of a constraintPostgres 检索约束的名称
【发布时间】:2016-01-22 17:18:58
【问题描述】:

如何检查约束的名称?

例如:

ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey  PRIMARY KEY(id);

当我尝试使用 \d 描述我的表时,我看不到任何有关我的主键的信息。

【问题讨论】:

  • 看起来你在 psql 中,但 pgadmin3 默认会显示给你。

标签: postgresql primary-key alter-table


【解决方案1】:

您可以从信息架构中查询约束名称:

SELECT constraint_name
FROM   information_schema.table_constraints
WHERE  table_catalog = 'my_catalog_name' AND    -- Database name
       table_schema = 'my_schema_name' AND      -- Often "public"
       table_name = 'contractor_contractor' AND 
       constraint_type = 'PRIMARY KEY';

还请注意,新版本的 plsql 确实在索引部分下提供了有关主键的信息。例如:

db=> CREATE TABLE contractor_contractor (id INT);
CREATE TABLE
db=> ALTER TABLE contractor_contractor
db-> ADD CONSTRAINT commerce_contractor_pkey  PRIMARY KEY(id);
ALTER TABLE
db=> \d contractor_contractor 
Table "public.contractor_contractor"
 Column |  Type   | Modifiers 
--------+---------+-----------
 id     | integer | not null
Indexes:
    "commerce_contractor_pkey" PRIMARY KEY, btree (id)

【讨论】:

  • 请记住,索引的名称和约束的名称不一定相同(尽管通常是这种情况)
  • 同一个表名可以出现在单个数据库的多个模式中。
  • @MikeSherrill'CatRecall' 好点。在table_catalog 列上添加了一个条件来解决这个问题。
猜你喜欢
  • 2022-11-19
  • 2023-01-06
  • 2014-02-27
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
相关资源
最近更新 更多