データベースが Postgres であることと、SQL を使用しているバージョンを確認するにはどうすればよいですか?
-
01-07-2019 - |
質問
アプリケーションのインストーラーを構築しています。ユーザーは、設定したデータソースを選択し、それがどのタイプのデータベースであるかを指定します。データソースに SQL ステートメントを送信して、データベースの種類が実際に Postgres であることを確認し、可能であれば、どのバージョンの Postgres が実行されているかを確認したいと考えています。
解決
これを試して:
mk=# SELECT version();
version
-----------------------------------------------------------------------------------------------
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
(1 row)
このコマンドは MySQL でも機能します。
mysql> select version();
+--------------------------------+
| version() |
+--------------------------------+
| 5.0.32-Debian_7etch1~bpo.1-log |
+--------------------------------+
1 row in set (0.01 sec)
私が見る限り、sqlite には version コマンドはありません。
他のヒント
SHOW server_version;
(完全を期すため)
SELECT version();
PostgreSQL には、呼び出すことができる version() 関数があります。
SELECT version();
次のようなものが返されます:
version
-----------------------------------------------------------------------------------------------
PostgreSQL 8.3.3 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
これは DB に依存しており、この関数が別の DBMS に存在する場合、出力には PostgreSQL と表示されます。
select version()
面白い ...version() は関数です。なぜだろうか?バージョンは、異なる入力/状況下で変更されたり、異なる値を返したりすることはありません。
昔、Sybase ではこれがグローバル変数であり、「select @@version」を実行することでバージョンを確認できたことを覚えているので興味深いです。
所属していません StackOverflow