私はこの問題を抱えていますが、plpgsqlを使ってPostgreSQL DBの機能を使うべきかどうか、あるいはPython/plpgsql(postgresql)またはpythonクラスで関数を作成する方が良いでしょうか?
私の上司はなぜ私がpythonではなくplpgsqlに関数を書いているのか尋ねました。なぜ彼がそれがより良いのかの信頼できる答えを与えることはできません。
私はそれをGoogleに持っており、これに関する情報は見つかりませんでした。 plpgsqlで関数を実行することについて想像できる唯一のことは、プログラミング言語を変更した場合、関数を呼び出して新しい言語で書き直さないことです。
これは、私がstackoverflowメンバの助けを借りて作成するplpgsqlの例です。私はPythonクラスに書き直すか、関数としてdb内に残して、単にPythonクラスから関数を呼び出しますか?
CREATE OR REPLACE FUNCTION createid(idslist varchar[], objecttype varchar)
RETURNS TABLE(original_id varchar, new_id varchar) as
$$
declare
l_prefix text;
BEGIN
IF LOWER(objectType) = 'global' THEN
l_prefix := 'GID';
ELSE
l_prefix := 'ORG';
END IF;
RETURN QUERY
INSERT INTO idstable(original_id, new_id)
select t.x, l_prefix||nextval('mapSquema.globalid')::TEXT
from unnest(idslist) as t(x)
returning *
END;
$$ LANGUAGE plpgsql;
良い質問です。しかし正解はありません。 Googleと "データベース対アプリケーションのビジネスロジック"一部の人々はそれが悪い習慣だと思う。しかし、私は完全に同意しない。それはトレードオフとアーキテクチャに関するものです。 – AlexM
ありがとう、私はそれをGoogleにする方法を知らなかった。 –