これがばかげた質問である場合は申し訳ありません。しばらくゲームから離れていました。
Web アプリに PostgresSQL を使用するかどうかを決定しています。今まで使ったことがありません。調査を行った結果、ストアド関数用の PGSQL 言語が非常に気に入っています。
多くの場合、私の Web アプリ コードでは、レコードを保存しています。これは、レコードが既に存在するかどうかを確認することから成り、存在する場合は更新し、存在しない場合は新しいレコードを挿入します。
PGSQLを使用すると、これらすべてを1つのクエリで実行できます(MysqLとは対照的に、できないと確信しています)
彼らはこれに利点がありますか?または、このロジックは、データベースに格納された関数ではなく、Web アプリ レイヤーに残す必要があります。
PGSQL での大まかな例を次に示します。これは単なる説明であり、安全なコードや優れたコードを意図したものではありません。
CREATE OR REPLACE FUNCTION save_client(IN strforename character varying, IN strnew character varying)
RETURNS TABLE(forename character varying, surname character varying) AS
$BODY$
DECLARE myrec int;
BEGIN
SELECT idx_clients INTO myrec from "Clients" WHERE LOWER("Clients".forename)=$1;
IF NOT FOUND THEN
RAISE NOTICE 'No results found.%',myrec;
INSERT INTO "Clients" (forename,surname) VALUES (strnew,strforename);
ELSE
RAISE NOTICE 'YES results found.%',myrec;
IF myrec NOTNULL THEN
UPDATE "Clients" SET forename=$2 WHERE idx_clients=myrec;
END IF;
END IF;
END;
$BODY$