私はPostgreSQL9.1を使用しています。
psqlでは、このクエリを使用して、特定のDBにどのような制約があるかを検出しています...
SELECT
*
FROM
information_schema.constraint_table_usage
WHERE
constraint_table_usage.table_catalog = 'journal_app_development'
AND
constraint_table_usage.constraint_name NOT LIKE '%_pkey';
出力...
table_catalog | table_schema | table_name | constraint_catalog | constraint_schema | constraint_name
-------------------------+--------------+------------+-------------------------+-------------------+-----------------
journal_app_development | public | users | journal_app_development | public | fk_entry_user
journal_app_development | public | users | journal_app_development | public | fk_user_task
(2 rows)
しかし、制約を削除しようとすると、エラーが発生します...
# ALTER TABLE users DROP CONSTRAINT "fk_entry_user";
ERROR: constraint "fk_entry_user" of relation "users" does not exist
私が間違っていることについて何か考えはありますか?
背景情報/動機
これを行う理由は、主キーではない制約をDBにドロップするスクリプト(具体的にはRakeタスク)を作成したいからです。