对不起,如果这是一个愚蠢的问题。我已经有一段时间没玩了。
我正在决定是否将 PostgresSQL 用于 Web 应用程序。我以前从未使用过它。完成研究后,我真的很喜欢它用于存储函数的 PGSQL 语言。
通常在我的网络应用程序代码中,我会保存一条记录。这包括检查记录是否已经存在 - 如果存在则更新它,否则插入新记录。
使用 PGSQL - 我可以在一个查询中完成所有这些操作(而不是 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$