FUNCTION
•
값을 반드시 반환한다
•
기능을 정의한 것
•
select 호출가능함
•
주로 클라이언트단에서 실행
기본형
CREATE FUNCTION function_name(param1 type, param2 type)
RETURNS return_type AS
BEGIN
-- code
END;
LANGUAGE language_name;
SQL
복사
PROCEDURE
•
값을 필요에 따라 반환한다
•
서버에서 실행해 처리속도가 빠름
•
미리 컴파일 된 sql 명령 집합이다.
•
Version 12부터는 CREATE PROCEDURE가 가능
기본형
CREATE PROCEDURE deactivate_unpaid_accounts()
LANGUAGE SQL
AS $$
UPDATE accounts SET active = false WHERE balance < 0;
$$;
SQL
복사
오류상황 처리
•
create query를 했을 때 아래와 같은 오류가 날 경우
ERROR: duplicate key value violates unique constraint "PK_cace4a159ff9f2512dd42373760"
Detail: Key (id)=(0) already exists.
SQL
복사
◦
아래 쿼리를 호출해서 해결 (user는 테이블 이름)
select setval( pg_get_serial_sequence('user', 'id'),
(select max(id) from public.user)
);
SQL
복사