자료실에 있는 트리거 관련 자료에 있는 예제 입니다.
아래 내용을 파일로 만들어서 텍스트로 저장한 후 psql 프롬프트에서
\i filename 으로
실행을 시켰더니 에러가 납니다.
트리거나 프로시져 룰 등...오늘 첨 해봅니다..ㅡㅡ;
테이블 만드는 건 되는데...function, trigger을 어떻게
실행시키는지 궁금합니다.
에러내용은 ...
------------ 에러내용--------------
lbs=# \i triggertest.txt
CREATE TABLE
ERROR: language "plpgsql" does not exist
HINT: You need to use "createlang" to load the language into the
database.
psql:triggertest.txt:28: ERROR: language "plpgsql" does not
exist
HINT: You need to use "createlang" to load the language into the
database.
ERROR: function emp_stamp() does not exist
psql:triggertest.txt:31: ERROR: function emp_stamp() does not
exist
---------에러내용 끝 ----------------
------------------- 아 래 -----------------
CREATE TABLE emp (
empname text,
salary integer,
last_date timestamp,
last_user text
);
CREATE FUNCTION emp_stamp () RETURNS OPAQUE AS '
BEGIN
-- 주어진 empname과 salary를 확인
IF NEW.empname ISNULL THEN
RAISE EXCEPTION ''empname은 NULL값이 될 수
없다.'';
END IF;
IF NEW.salary ISNULL THEN
RAISE EXCEPTION ''% 는 NULL로 된 salary를 가질 수
없다'', NEW.empname;
END IF;
-- 월급을 받고 있는 사람 중에 종업원인가?
IF NEW.salary < 0 THEN
RAISE EXCEPTION ''% 는 음수의 salary를 가질 수 없다.'',
NEW.empname;
END IF;
-- 언제 누가 월급을 조정했나?
NEW.last_date := ''now'';
NEW.last_user := current_user;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
---------------------아 래 끝
----------------------------
|