CREATE TABLE members {
id varchar(16),
name varchar(16),
last_access timestamp(0)
}
CREATE TABLE member_logins {
id varchar(16),
last_access timestamp(0)
}
위와 같이 회원정보를 담고있는 members 테이블과 로그인시 생성되고 로그아웃시 삭제되는 member_logins 테이블이 있습니다.
로그아웃할때(member_logins 테이블의 로우가 삭제될때) 마지막 접속시각을 member.last_access 에 update 시키는 트리거를 만들려고 합니다.
CREATE OR REPLACE FUNCTION func_update_access()
RETURNS TRIGGER AS $$
BEGIN
UPDATE members SET last_access = NEW.last_access;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER update_access BEFORE DELETE
ON member_logins FOR EACH ROW
EXECUTE PROCEDURE func_update_access();
와 같이 만들었습니다.
그런데 막상 member_logins 를 삭제하니 다음과 같은 오류가 나오면서 제대로 동작을 안하네요.
ERROR : record "new" is not assigned yet
하루종일 트리거에 대해서 공부한후 트리거를 처음 사용해보는데 어떻게 해야할지 모르겠습니다.
특히 트리거의 동작시점과 이전 테이블의 데이타가 어떤 변수명으로 넘어오는지 잘모르겠습니다.
위와 같은 상황에 대해서 어떤 트리거함수와 트리거를 사용해야하는지,
그리고 제가 만들어본 쿼리를 보고 혹시 제가 잘못이해한게 있는지 조언좀 부탁드립니다.
감사합니다.
|