A5:SQL Mk-2

開発のこと、日々のこと

削除したテーブルがDBツリーに残っている

ホーム フォーラム A5:SQL Mk-2掲示板 削除したテーブルがDBツリーに残っている

  • このトピックには2件の返信、1人の参加者があり、最後にポスグレ初心者により2週、 1日前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #22840 返信
    ポスグレ初心者
    ゲスト

    はじめまして。
    表題のとおりの件で質問です。

    昨日、過去に作った”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のツリーではちゃんと消えています。

    #22843 返信
    松原正和
    キーマスター

    ポスグレ初心者さんこんにちは。
     
    テーブルを DROP したのなら、SELECT 文が成功するのはおかしいですね。
     
    PostgreSQL は CREATE TABLE や DROP TABLE 等の DDL もトランザクション制御の対象なのですが、それが関連したりはしていないでしょうか?

    #22861 返信
    ポスグレ初心者
    ゲスト

    作者様、こんばんは。

    自己解決しました!
    原因は自分の勘違いでした・・・お騒がせして申し訳ありませんでした。
    見つけたこと、学んだことを報告しようと思います。

    見つけたこと
    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は囲めと指摘する

    以上となります。お騒がせして申し訳ありませんでした。
    ご対応ありがとうございます!

3件の投稿を表示中 - 1 - 3件目 (全3件中)
返信先: 削除したテーブルがDBツリーに残っている
あなたの情報:




コメントは受け付けていません。