2016-01-22 3 views
1

Как я могу проверить имя моего ограничения?Postgres получает имя ограничения

Например:

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

Когда я пытаюсь описать мою таблицу с \d я не вижу никакой информации о моем первичном ключе.

+0

Похоже, вы находитесь в psql, но pgadmin3 покажет их вам по умолчанию. – Bill

ответ

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) 
+1

Имейте в виду, что имя индекса и имя ограничения не обязательно одинаковы (хотя обычно это так) –

+0

Такое же имя таблицы может отображаться в нескольких схемах в одной базе данных. –

+0

@ MikeSherrill'CatRecall 'хорошая точка. Добавлено условие для столбца 'table_catalog', чтобы решить эту проблему. – Mureinik

Смежные вопросы