📜  列出 postgres 中的所有约束 - SQL (1)

📅  最后修改于: 2023-12-03 15:36:51.189000             🧑  作者: Mango

列出 postgres 中的所有约束 - SQL

如果你正在使用 PostgreSQL 数据库,并需要查看所有约束,下面的 SQL 查询将帮助你完成此任务。

SELECT
    tc.table_name, 
    kcu.column_name, 
    tc.constraint_name, 
    tc.constraint_type 
FROM 
    information_schema.table_constraints AS tc 
JOIN 
    information_schema.key_column_usage AS kcu
    ON tc.constraint_name = kcu.constraint_name
    AND tc.table_schema = kcu.table_schema
WHERE 
    tc.constraint_type = 'CHECK'
    OR tc.constraint_type = 'FOREIGN KEY'
    OR tc.constraint_type = 'PRIMARY KEY'
    OR tc.constraint_type = 'UNIQUE'
ORDER BY 
    tc.constraint_name;

该查询返回以下列:

  • table_name:包含约束的表的名称。
  • column_name:受约束的列的名称。
  • constraint_name:约束的名称。
  • constraint_type:约束的类型。

约束类型有 4 种:CHECKFOREIGN KEYPRIMARY KEYUNIQUE

使用这个查询,你可以找到数据库中所有的约束信息。如果你只需要特定表的约束信息,你可以添加一个 WHERE 子句来限制结果细化。例如,要获取名为 customers 的表的所有约束信息,你可以编写以下查询:

SELECT 
    tc.constraint_name, 
    tc.constraint_type
FROM 
    information_schema.table_constraints tc
WHERE 
    tc.table_name = 'customers';
结论

PostgreSQL 数据库是一个强大灵活的数据库,提供了强大的约束功能来保证数据的准确性和完整性。通过查询系统信息的 information_schema 表,你可以轻松地列出数据库中的所有约束。