Postgresql

PostgreSQL 8.4:如何判斷是否安裝了程序語言?

  • January 19, 2018

我有一個安裝程序,需要 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]

引用自:https://dba.stackexchange.com/questions/35343