วิธีแสดงรายการข้อ จำกัด ทั้งหมดของตารางใน PostgreSQL


30

วิธีแสดงรายการข้อ จำกัด ทั้งหมด (คีย์หลักตรวจสอบไม่ซ้ำกันแบบเอกสิทธิ์เฉพาะบุคคล, .. ) ของตารางใน PostgreSQL


1
แบบสอบถามในการเชื่อมโยงเป็นประโยชน์หรือไม่
Arulkumar

6
\d+ tablenameใน psql
Jasen

คำตอบ:


33

ข้อ จำกัด pg_catalog.pg_constraintสามารถเรียกดูได้ผ่านทาง

SELECT con.*
       FROM pg_catalog.pg_constraint con
            INNER JOIN pg_catalog.pg_class rel
                       ON rel.oid = con.conrelid
            INNER JOIN pg_catalog.pg_namespace nsp
                       ON nsp.oid = connamespace
       WHERE nsp.nspname = '<schema name>'
             AND rel.relname = '<table name>';

แทนที่<schema name>ด้วยชื่อสกีมาของคุณและ<table name>ด้วยชื่อตารางของคุณ


1
ขอให้สังเกตว่าpg_catalog.pg_constraintไม่มีNOT NULLข้อ จำกัด
Luís de Sousa

6

ในpsqlบรรทัดคำสั่งข้อมูลนี้อยู่ในแผ่นตารางที่ได้รับพร้อมกับ\d+คำสั่ง d+ยังแจ้งให้ทราบถึงNOT NULLข้อ จำกัด บางสิ่งที่ไม่ได้อยู่ในpg_catalog.pg_constraintตาราง ตัวอย่าง:

# \d+ observations.stream   
                                                  Table "observations.stream"
 Column |       Type        | Collation | Nullable | Default | Storage  | Stats target |                 Description                 
--------+-------------------+-----------+----------+---------+----------+--------------+---------------------------------------------
 id     | integer           |           | not null |         | plain    |              | 
 name   | character varying |           | not null |         | extended |              | This should be a table in the import schema
 min_id | integer           |           | not null |         | plain    |              | 
 about  | character varying |           | not null |         | extended |              | 
Indexes:
    "stream_pkey" PRIMARY KEY, btree (id)
    "stream_name_key" UNIQUE CONSTRAINT, btree (name)
Check constraints:
    "stream_id_check" CHECK (id > 0)
Referenced by:
    TABLE "profile" CONSTRAINT "profile_id_stream_fkey" FOREIGN KEY (id_stream) REFERENCES stream(id)

ข้อแม้ที่นี่คือคุณไม่ได้รับชื่อของข้อ จำกัด ทั้งหมดด้วยวิธีนี้


ฉันเห็นชื่อข้อ จำกัด ในผลลัพธ์ที่คุณโพสต์
ypercubeᵀᴹ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.