안녕하세요.
테이블안에 있는 필드 변경에 관한 문제가 있어서 이렇게 질문 드립니다. 조금 긴데 이해해 주시고 봐주십시요.
테이블은....
create table course_transcripts (
trn_pk serial primary key,
trn_std_fk varchar(10) references registration.rypathid
on update cascade
on delete cascade,
.....
);
테이블의 필드, trn_std_fk을 integer (foriegn Key) 로 바꿀려고 해서 아래와 같이 했습니다.
Add column to course_transcripts:
ALTER TABLE course_transcripts ADD COLUMN trn_reg_fk
INTEGER REFERENCES registration.rrecnum
ON UPDATE CASCADE ON DELETE CASCADE;
Populate trn_reg_fk with rrecnum values corresponding to trn_std_fk rypathid values:
UPDATE course_transcripts SET trn_reg_fk = registration.rrecnum
WHERE trn_std_fk = registration.rypathid;
Verify that the values in trn_reg_fk are appropriate:
SELECT count(trn_pk) FROM course_transcripts, registration
WHERE trn_reg_fk = rrecnum AND trn_std_fk = rypathid;
Drop the course_transcripts.trn_std_fk column (this is new feature in 7.3)
ALTER TABLE course_transcripts
DROP COLUMN course_transcripts.trn_std_fk;
Rename the trn_reg_fk column:
ALTER TABLE course_transcripts
RENAME COLUMN trn_reg_fk TO trn_std_fk;
이렇게 했는데 문제가 생겼습니다. 필드, trn_std_fk을 drop했을때 이 필드와 연결된 trigger (reference key)가 같이 자동적으로 drop 되지 않는 것 같습니다. 그리고 rename을 했을때 새로 add한 trn_reg_fk에 관련된 trigger가 자동적으로 연결되지 않고 전에 있던 trn_std_fk의 trigger가 연결되는 것 같습니다.
어떻게 해야 되죠... 부탁드립니다.
건승하십시요.
|