죄송합니다. 이것은 바보 같은 질문입니다. 나는 잠시 게임에서 빠져 나왔다.데이터베이스 논리 VS 응용 프로그램 논리
웹 응용 프로그램에 PostgresSQL을 사용할지 여부를 결정합니다. 나는 전에 그것을 사용한 적이 없다. 내 연구를 해본 결과, 저장 함수에 대한 PGSQL 언어가 정말 마음에 든다.
종종 웹 앱 코드에서 레코드를 저장하고 있습니다. 이것은 레코드가 이미 존재하는지 확인하는 것으로 구성됩니다. 업데이트하는 경우 새 레코드를 INSERT하십시오. PGSQL와
- 나는 이점이에
을 자신의가 (당신이 할 수없는 확신 메신저 반대 MySQL을로) 한 쿼리에서이 모든 것을 할 수 있습니까? 또는이 로직이 데이터베이스의 저장 함수가 아닌 web-app 계층에 남아 있어야합니다.
거친 예가 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$
나는 보통이 아니라 몇 가지 이유를 들어, 응용 프로그램에서 이러한 종류의 기능이있을 것이다
죄송합니다. @Folarfury가 자세히 설명해 주실 수 있습니까? 당신은 오히려 이런 종류의 기능을 가지고 있다고 말하지만, 당신이 어떤 것을 언급하는지는 불확실합니다. – user2007960
일반적으로 비즈니스 논리입니다. 존재하지 않는 키 (그렇지 않으면 업데이트되지 않는 한)를 유지하거나 읽는 응용 프로그램의 코드 조각을 삽입하는 것이 직관적이지는 않습니다. 나는 그 종류의 논리가 데이터베이스가 아닌 응용 프로그램 코드에있을 것으로 기대합니다. –
Soloarfury에 감사드립니다 -이 질문을 게시 할 때까지 그 방법을 설명했습니다. 그게 일반적인 합의인지 궁금해? – user2007960