ホーム › フォーラム › A5:SQL Mk-2掲示板 › 主キーの赤色表示が異なる項目に付いてしまう
- このトピックには6件の返信、2人の参加者があり、最後ににより5年、 10ヶ月前に更新されました。
-
投稿者投稿
-
Grosjeanゲスト
いつも大変お世話になっております。
information_schema から取得した主キーと[カラム]タブで赤色表示された項目に差があります。
現在表示がおかしいと感じている箇所は
[データ]タブ
[カラム]タブ
[ソース] タブ
の3つです。
[データ]タブに関してはタグ間を何度か行き来していると正しく表示されるようになることがあります。なお、当事象が発生しているテーブルに対して行った操作としては
項目の順番入れ替え、主キーの貼り直しを行った気がしています。赤色表示は項目名ではなく、裏側?で持っているインデックス番号などで表示を行っているのでしょうか。
誤った表示となっており不便を感じております。どうぞよろしくお願い致します。
「環境」
データベース PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4), 64-bit
A5:SQL Mk-2 version 2.13.3 x86松原正和キーマスターGrosjeanさんこんにちは。
テーブルエディタは開いたときに主キー項目を含むいくつかの情報をキャッシュします。テーブルエディタの各タブには再読み込みボタンがあるのでそれで再読み込みできるはずです。
また、テーブルの列情報はDB接続時から情報をキャッシュします。DBツリーで該当データベースを選択し、右クリックから「データベース情報の再読み込み」等でキャッシュを破棄できます。
これで対処できますでしょうか?。
Grosjeanゲスト松原さん、お返事ありがとうございます。
カラムタブの再読み込みボタン、右クリックから「データベース情報の再読み込み」をいずれも試しましたが残念ながら現象は解決されません。Grosjeanゲスト前回の投稿にも載せているのですが、列の順番を変更したことが影響しているのではと考えております。
下記に具体的な経緯、事象を記載させていただきます。
———-
■経緯
A列、B列(主キー)という列定義のテーブルがあり、
B列、A列という順番に定義を変更したかったためA列を一度削除し、B列を追加しました。
なお、A列を一度削除した理由は、PostgreSQLでは列の順番の変更方法をググっても見つからず仕方なくそのように致しました。
■事象
順番変更前:
①A列
②B列 赤色
順番変更後:
①B列 黄色
②A列 赤色
———-
①B列 赤色
②A列
となる想定だったのですが、
主キーであるB列は黄色となり、主キーでも必須でもないA列が赤色となってしまっております。
よろしくお願い致します。松原正和キーマスターGrosjeanさんこんにちは。
A5:SQL Mk-2はこれまでPostgreSQLの主キーを取得するとき、pg_index等のシステムカタログを使っていたのですが、2019/1/14 公開予定のVersion 2.14.0 rc8でinformation_schemaを使うように修正してみます。
これで直りますでしょうか?。- この返信は5年、 10ヶ月前に松原正和が編集しました。
Grosjeanゲスト松原さん、迅速なご対応ありがとうございます。
お忙しい中、そして他の多くの対応をされている中で本件にも目を向けていただいていることに深く感謝いたします。
さっそく Version 2.14.0 rc8 を使用して確認させていただきました。
結論としては、デグレとなり残念ながら完全には直りませんでした。
information_schema ではダメなのかもしれません。
現在、解決法を模索している段階でして提案にはまだ時間を要するため、
Version 2.14.0 のリリース(2019年1月頃)からは外していただくのが賢明だと考えております。
以下の 3 つの観点の組合せ 12 ケースを予定して順に確認しておりました。
①テスト環境、本番環境
×
②問題のあったテーブル、なかったテーブル
×
③テーブル、カラム、ソース タブ
①の観点の本番環境で主キーの背景色が赤くなりませんでした。
(Version 2.13.3 では正常に表示されています。)
テスト環境では問題なく直っておりました。
そもそもなぜテスト環境、本番環境の 2 つの環境で確認することにしたかといいますと、
私も開発用に小さなツールを作成していまして、
主キーを取得する仕組みを当初 information_schema を使用して実装したのですが
本番環境だと information_schema の情報が 1 レコードも取得できないことに気づき実装方法を変更した経緯があったためです。
自作のツールでは暫定対応として
SELECT * FROM テーブル名 WHERE 1 <> 1
というクエリを投げて各カラムの NpgsqlDbColumn.IsKey プロパティを見てテーブルの主キーとしています。
(Npgsql という PostgreSQL データベースサーバに対する .Net データプロバイダを使用しています。)
本来はシステムカタログや information_schema から取得するのが当然で
A5:SQL Mk-2 のような広く認知されたすばらしいツールにはとてもお勧めできる手法ではありません。
また、松原さんが採用している pg_index 等のシステムカタログから取得する方法に間違いはないように感じております。
お手数をおかけしておりますが、
私の方で引き続き原因の特定、解決できる SQL をご提案させていただくように致します。
どうぞよろしくお願い致します。松原正和キーマスターGrosjeanさんこんにちは。
なかなかうまくいかないものですね。pg_xxx系のシステムカタログを使うべきなのか、information_schemaを使うべきなのか、どちらが「べき」なのでしょう?。
とりあえず、修正は元に戻すことにします。 -
投稿者投稿