我想找出一种更好的方法来列出特定模式中的所有唯一约束.我能够用下面这个问题列出它们,这些问题来自于对类似问题的旧答案:
SELECT
tc.table_schema,
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
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
JOIN
information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema
WHERE
tc.constraint_type = 'UNIQUE' AND tc.table_schema = 'mySchema'
但是这个查询不会返回很好的结果.例如,如果我有这样一张表:
CREATE TABLE myTable (
id int not null primary key,
col1 text,
col2 text,
col3 text,
unique (col1, col2, col3)
)
SELECT语句将返回每列的所有9行结果,其他列包含在UNIQUE约束中--包括自身.
Sample output个
"public" "mytable_col1_col2_col3_key" "mytable" "col1" "public" "mytable" "col1"
"public" "mytable_col1_col2_col3_key" "mytable" "col1" "public" "mytable" "col2"
"public" "mytable_col1_col2_col3_key" "mytable" "col1" "public" "mytable" "col3"
"public" "mytable_col1_col2_col3_key" "mytable" "col2" "public" "mytable" "col1"
"public" "mytable_col1_col2_col3_key" "mytable" "col2" "public" "mytable" "col2"
"public" "mytable_col1_col2_col3_key" "mytable" "col2" "public" "mytable" "col3"
"public" "mytable_col1_col2_col3_key" "mytable" "col3" "public" "mytable" "col1"
"public" "mytable_col1_col2_col3_key" "mytable" "col3" "public" "mytable" "col2"
"public" "mytable_col1_col2_col3_key" "mytable" "col3" "public" "mytable" "col3"
Expected output个
"public" "mytable_col1_col2_col3_key" "mytable" ["col1","col2","col3"]
那么,有没有人可以帮我修复这个查询,以返回唯一约束的美化表示?