아래는 테이블 A에 정의된 룰입니다.
--------------------------------------------------------------------------------------------
CREATE OR REPLACE RULE tb_a_insert AS
ON INSERT TO tb_a DO INSERT INTO tb_b (uno,mid....)
VALUES (new."no" - 1, new.mid....);
--------------------------------------------------------------------------------------------
문제는... tb_a 테이블에 no라는 필드가 serial로 정의되어 있는데..
tb_b 테이블에 rule로 인서트시...no값이 제대로 불러지지 않는 문제가 발생하네요..
현재 "new.no-1"이라고 해둔 이유는... 아래와 같습니다.
1. new.no-1 이 아닌 new.no라고 할경우... tb_a의 마지막 serial값이 8인경우 tb_a에 10이라는 no값이 인서트가 되며.. tb_b에는 9라는 값이 인서트 됩니다.
2. 이런 문제로 new.no-1로 하였는데.. 1번과 마찬가지로 tb_a의 serial값이 no가 2씩 증가되어 들어가더군요..
3. tb_a에서 no는 pk이며... tb_b에서는 tb_a의 pk값을 저장하기 위한 필드로 rno를 정의해 둔 상태이며.. 위의 룰에서는 안나와 있지만..tb_b에서는 uno라는 필드로 serial이 따로 존재합니다.
왜 2씩 증가가 되는걸까요? ㅜㅜ 이번에 rule을 처음 사용해보는데...
이런 문제를 다룬 분들은 안계신듯하네요..
메뉴얼에도 없고..
뭔가 잘못 정의된 부분이 있는건가요? 도움 부탁드려요 ^^
|