ホーム › フォーラム › A5:SQL Mk-2掲示板 › 削除したテーブルがDBツリーに残っている
- このトピックには2件の返信、1人の参加者があり、最後にポスグレ初心者により2週、 1日前に更新されました。
-
投稿者投稿
-
ポスグレ初心者ゲスト
はじめまして。
表題のとおりの件で質問です。昨日、過去に作った”SS_01_Type”というテーブルを削除しました。その後、
SELECT * FROM pg_tables WHERE schemaname = ‘public’ ORDER BY tablename ASC;
で消えていることを確認したのですが、DBツリーにはテーブルが残ったままなんです。スキマを再読み込みしても消えてくれませんし、ダブルクリックするとデータが表示されます。
また、右クリック→アドオンメニュー→テーブル情報をクリックすると普通に表示されます。削除失敗したのかな?と思って
DROP TABLE SS_01_Type;
をすると、今度は「テーブル”ss_01_type”は存在しません」となります。どうすればDBツリーから無くせるんでしょう?また、原因も教えていただきたいです。
なお、pgAdminのツリーではちゃんと消えています。
松原正和キーマスターポスグレ初心者さんこんにちは。
テーブルを DROP したのなら、SELECT 文が成功するのはおかしいですね。
PostgreSQL は CREATE TABLE や DROP TABLE 等の DDL もトランザクション制御の対象なのですが、それが関連したりはしていないでしょうか?ポスグレ初心者ゲスト作者様、こんばんは。
自己解決しました!
原因は自分の勘違いでした・・・お騒がせして申し訳ありませんでした。
見つけたこと、学んだことを報告しようと思います。見つけたこと
1.テーブルは削除されてなかった。
SELECT * FROM pg_tables WHERE schemaname = ‘public’ ORDER BY tablename ASC;
でもう一度確かめてみると、”SS_01_Type”テーブルは結果の最初にありました・・・2.SQL文を””で囲んだら削除できた。
上のことで、DROP TABLE SS_01_Type; は成功してなかったと確定しました。
どうすればいいんだろう?とテーブルソースSQLを見てて、「もしや?」と思い
DROP TABLE “SS_01_Type”; (テーブル名を””で囲んだ)
でやってみると無事削除できました!学んだこと:あくまで自分の感想です
1.大文字のテーブルは昇順並びで小文字より先にくる
全1086テーブルのほとんどはg, e, sで始まるテーブルであり、件の”SS_01_Type”は唯一の大文字入りのテーブルでした。
だから、
SELECT * FROM pg_tables WHERE schemaname = ‘public’ ORDER BY tablename ASC;
をやったとき、残っているなら後半だろうと思ってたのですが・・・大文字のテーブルって昇順並びで小文字より先に来るんですね。初めて知りました・・・2.大文字のテーブルは””で囲まないといけない
2-1.pgAdminは間違いを指摘してくれない
2-2.A5:SQL Mk-2は指摘してくれる実は・・・囲んでない方の DROP TABLE SS_01_Type; はpgAdminでやって、「Run successfully」となったんですよね。
その後、A5:SQL Mk-2のDBツリーで残っているのを発見して、
DROP TABLE SS_01_Type;
をやったら失敗して、
DROP TABLE “SS_01_Type”;
でやったら削除できた、というのが真相でした。※A5:SQL Mk-2も初心者なので、行ったり来たりしてます
感想まとめ
1.大文字のテーブルは昇順並びで小文字より先にくる
2.大文字入りのテーブルは””で囲むべき
(1)囲まなくてもpgAdminは受け入れてくれる。が、「Run successfully」となっても、実はできてない
(2)A5:SQL Mk-2は囲めと指摘する以上となります。お騒がせして申し訳ありませんでした。
ご対応ありがとうございます! -
投稿者投稿