상품 테이블 t0
주문목록 테이블 t1
이런 구조를 가진 디비가 있는데 업무로직은
주문이 이뤄지면 (UPDATE) 상품 테이블에 해당상품의 주문횟수를 증가시키고
주문취소가 발생하면(UPDATE) 반드시 주문횟수를 감소시켜야 됩니다.
그래서.. 트리거를 사용하려는데 먼저 내장 함수를 만들어 등록
시켜야 되는줄 알고있습니다. 그런데 위와같은 업무처리는 굳이
함수를 만들고 트리거를 사용하지 않아도 응용프로그램에서 업데이트
쿼리 한줄 더 써주면 되지 않나 해서 질문드립니다.
예를 들어 주문이 발생했다면 밑에 처럼 쿼리가 만들어 지겠지요.
BEGIN
INSERT INTO t1 VALUES (nextval('order_seq'), product_id, order_date))
UPDATE t0 SET order_cnt = order_cnt + 1 WHERE product_id = 'A1'
COMMIT
그리고.. 만약 이런 처리를 트리거로 하려면 함수를 먼저 만들어야
하지 않습니까? 그런데 함수를 작성하려는데 UPDATE 쿼리처럼
리턴값이 없는 경우 함수작성할때 리턴타입은 뭘로 해줘야 되나요?
위의 경우로 예를 들어 plpgsql을 사용한 예제하나만 보여주세요..
이것저것 부탁만 드리네요. 죄송해여..
|