CREATE TABLE test100 (
idx serial
, id varchar(20) not null
, ad_type char(2) not null default ''
, tm_a timestamp without time zone
, tm_b timestamp without time zone
, ap_flag enum_tf not null default 'F'
, es_flag enum_tf not null default 'F'
, bt_flag enum_tf not null default 'F'
);
CREATE OR REPLACE FUNCTION update_test100() RETURNS TRIGGER AS $test100$
BEGIN
IF (OLD.es_flag = 'T' AND OLD.bt_flag = 'T') THEN
NEW.ap_flag = 'T';
NEW.tm_b = current_timestamp;
END IF;
RETURN NEW;
END;
$test100$ LANGUAGE plpgsql;
CREATE TRIGGER trg_test100 AFTER UPDATE ON test100
FOR EACH ROW EXECUTE PROCEDURE update_test100();
이렇게 트리거를 생성했고,
es_flag, bt_flag 값이 둘다 T가 되면 ap_flag와 tm_b에 값을 업데이트 할려고 하는데
안돼서 이렇게 질문을 올립니다.
es_flag과 bt_flag는 동시에 업데이트 되지는않구요. 각각 업데이트 되는 시점이 다릅니다.
es_flag와 bt_flag 둘다 값이 T가 될때 트리거가 동작하게 할려면 어떻게 해야 할까요?
프로그램으로 처리만 하다가 디비에서 처리하게 할려고 하니 잘 안되네요. |