Postgresql
PostgreSQL 8.4:如何判斷是否安裝了程序語言?
我有一個安裝程序,需要 plpgsql 在 PostgreSQL 8.4 數據庫中安裝儲存過程。我需要確保安裝了語言,否則應用程序將失敗。我不想放棄該語言並重新添加它,因為這可能會搞砸一些其他事情。
有沒有辦法“溫和地”安裝語言?
CREATE LANGUAGE IF NOT EXISTS
似乎無效。
在 PostgreSQL 9.0及更高版本中,PL/pgSQL 是預設預安裝的。
9.0 版還介紹了
CREATE OR REPLACE LANGUAGE
:
CREATE OR REPLACE LANGUAGE
將創建一種新語言,或替換現有定義。如果語言已經存在,它的參數會根據指定的值或取自pg_pltemplate
…為避免在舊版本上引發異常,您可以檢查目錄表
pg_language
。我再次引用手冊:系統目錄 pg_language
$$ … $$記錄有關目前安裝的語言的資訊。
SELECT EXISTS ( SELECT 1 FROM pg_language WHERE lanname = 'plpgsql');
或者使用客戶端應用程序
createlang
,它可以選擇檢查現有語言:createlang -l [connection parameters]