2008-10-25 4 views

답변

3

나는 리팩토링하는 것이 좋지 않거나 시대에 뒤진 데이터베이스 디자인을 제안 할 수 있다고 제안합니다. 그렇게하기 위해서 당신이 얼마나 많은 일을 하느냐에 달려 있습니다.

사용자 정의 데이터를 대리 키로 바꾸려면 nullable ID 열을 포함하도록 기존 테이블을 변경하면 기존 레코드를 모두 할당해야합니다 자동으로 새 키.

새 필드가 고유 ID로 채워지면이 테이블에 외래 키 참조를 이동하고 바꿔야 할 경우 새 필드를 포함하도록 테이블을 변경하고 다음과 같이 사용하십시오.

UPDATE child_table 
SET new_fk_val = 
    SELECT new_pk_val 
    FROM parent_table 
    WHERE parent_table.old_pk_val = child_table.old_fk_val 

그 단계가 완료되면 는, 당신은, 기존의 기본 키 열을 삭제, 기존의 외래 키 열을 삭제, 기존의 외래 키 제약 조건을 삭제 새 기본 키 제약 조건을 설정 한 다음 새 외래 키 제약 조건을 설정할 수 있습니다 .

DELETE FROM child_table 
WHERE old_fk_val NOT IN 
    (SELECT old_pk_val FROM parent_table) 
: 부모와 자식 테이블 관계의 이전 버전을 사용하면 자식 테이블에 잘못된 기록을 갖도록 있다면 물론

, 다음과 같은 일을 할 수 있습니다

관련 문제