오라클에서는 Foreign Key가 걸려 있을 경우,
ON UPDATE CASCADE 옵션이 실행되지 않기 때문에 컬럼값을 바꾸기가 쉽지 않습니다.
이때, 트리거를 만들어서 부모테이블이 업데이트 될 때, 자식테이블도 업데이트 되도록 하면 됩니다.
자식테이블 COMTCCMMNDETAILCODE 테이블의 CODE_ID가 현재 Foreign Key구요.
Foreign Key 제약 때문에 UPDATE가 진행되지 않습니다.
부모 : COMTCCMMNCODE.CODE_ID
자식 : COMTCCMMNDETAILCODE.CODE_ID
자식 : COMTCCMMNDETAILCODE.CODE_ID
아래와 같이 트리거를 하나 만들고 UPDATE문을 실행합니다.
CREATE OR REPLACE TRIGGER RENAME_TRIGGER
AFTER UPDATE ON COMTCCMMNCODE FOR EACH ROW
BEGIN
UPDATE COMTCCMMNDETAILCODE
SET CODE_ID = 'INTENTION'
WHERE CODE_ID = 'INTENT';
END;
자, 잘 실행이 될 겁니다.
아래 그림처럼 값이 잘 바뀌어 있습니다.
그리고, 1회용 트리거기 때문에 방금 생성한 트리거를 삭제합니다.
한가지 문제는,,, UPDATE 하는 값이 바뀔 때마다 트리거 값도 같이 바꿔줘야 한다는 거겠죠.
하지만, 임시방편으로 쓸만하다고 봅니다^^