19
我需要從postgresql表中刪除一個唯一的約束,但我沒有在模式中給它一個名字。有誰知道,如何得到這種約束的名稱,或者如何刪除它?如何獲取postgresql中唯一約束的名稱?
我需要從postgresql表中刪除一個唯一的約束,但我沒有在模式中給它一個名字。有誰知道,如何得到這種約束的名稱,或者如何刪除它?如何獲取postgresql中唯一約束的名稱?
這就是說,(單柱constaint):
tableName_columnName_key
要獲得constaint名字寫(在PSQL):
\d tableName
或使用pg_constraint
系統目錄:
SELECT conname
FROM pg_constraint
WHERE conrelid =
(SELECT oid
FROM pg_class
WHERE relname LIKE 'tableName');
你也可以從對象樹中的pgAdmin中獲取它。
SELECT conname
FROM pg_constraint
WHERE conrelid = 'mytable'::regclass::oid
謝謝,它有幫助,但是當我用alter刪除約束時,它也刪除了索引。你不知道爲什麼嗎? –
唯一約束有其自己的隱式和內部btree索引(http://www.postgresql.org/docs/current/static/ddl-constraints.html#AEN2445) –