如何检查约束的名称?Postgres检索约束的名称
例如:
ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);
当我尝试描述与\d
我的表我没有看到我的主键的任何信息。
如何检查约束的名称?Postgres检索约束的名称
例如:
ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);
当我尝试描述与\d
我的表我没有看到我的主键的任何信息。
你可以从你的信息模式查询约束名称:
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'列添加了一个条件来解决这个问题。 – Mureinik
看起来像你在psql中,但pgadmin3会默认显示给你。 – Bill