PostgreSQL8.2.24を使っています。
インデックスの削除と、インデック名のつけ方についてお聞きしたいです。
まず、削除ですが、create index tbl_fld_key on tbl (fld);
としたものは、drop index tbl_fld_key;で削除できますが、
create tbl (
fld integer,
unique key (fld)
);
としたものは、drop index tbl_fld_keyで削除できません。
インデックス名は\diコマンドで表示されている tbk_fld_keyです。
メッセージは次のとおりです。
db =# drop index tbl_fld_key;
ERROR: cannot drop index tbl_fld_key because constraint tbl_fld_key on table tbl requires it
HINT: You may drop constraint tbl_fld_key on table tbl instead.
あと、PostgreSQLのインデック名の規則について
インデックス名を見ただけで判断できるように作られるようですが
PRIMARY KEY テーブル名_フィールド名_pkey
UNIQUE テーブル名_フィールド名_key
重複可 テーブル名_フィールド名_??? <<--- この部分が知りたいです。
No.1ベストアンサー
- 回答日時:
少し勘違いがあるようです。
create tableで指定するprimary keyやuniqueは、重複チェックを効率的に行なうために、内部的にインデクスを定義しています。このインデクスだけをdropできてしまうと、矛盾する状態になってしまいます。
primary keyやuniqueで定義されるインデクスを削除するには、alter tableでprimary keyやuniqueの制約自体を削除する必要があります。
primary keyやuniqueで定義されるインデクスは、PostgreSQLの内部処理でインデクスを定義するため、名前も自動的に決められます。
一方、重複可のインデクスは、create indexでユーザが定義し、名前もユーザ側で指定したものになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- MySQL MYSQL エラー 2 2022/10/18 11:37
- Visual Basic(VBA) このマクロの説明文を教えてほしいです。 1 2023/01/12 09:17
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列が存在しないと言われる
-
0の除算
-
Excel 2019 のピボットテーブル...
-
Accessで、固定アルファベット+...
-
Access IF文でテーブルに存在し...
-
Access テキスト型に対する指定...
-
エクセルVBAで5行目からオート...
-
Joy To Keyのマウスやキーボー...
-
Accessでテーブルの値をテキス...
-
accessでの請求管理について
-
IT用語について質問です。 以前...
-
ACCESSでオートナンバーを任意...
-
accessでのフォームの連携について
-
DBのタイプの指定とサイズにつ...
-
access2000:フォームで入力し...
-
Access 既に開いているフォー...
-
必須入力項目と入力必須項目
-
Accessのクエリでデータの入力...
-
ACCESS2003 Aアクロバットを介...
-
Accessでコードを入れると名前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
列が存在しないと言われる
-
PostgreSQLで表結合+DELETEしたい
-
0の除算
-
長いSQL文を実行するには?
-
alter tableすると、処理が止ま...
-
INSERTできるレコード数を制限...
-
constraint と index の違い
-
DBから日付順に指定件数の削除...
-
COPY時のtimestamp型について
-
動的に生成したカラムを使ったF...
-
Null値を無視してユニークにしたい
-
postgreSQLの日付を変数にする...
-
INSERTできない
-
SQLite:項目が存在しない場合の...
-
大量データを更新したら、処理...
-
DB2 「既存カラムへのnot null...
-
複数キーワードでのあいまい検索
-
SQLで特定データがNULLなら別デ...
-
powergres(postgres)にalter文...
-
DB2でUNIQUE制約を削除したい
おすすめ情報