2014-05-15 1 views
0

내 질문의 영향을 알고 있지만 내 경우가 고유 할 수 있습니다.다른 테이블을 가리 키도록 SQL의 외래 키 할당을 어떻게 바꿀 수 있습니까?

외래 키의 하위 테이블을 변경하는 다른 테스트 데이터베이스에 적용 할 델타 스크립트를 만들려고합니다. 예를 들어 :

는 테이블의 열을 외부 키를 가리키는 B와을 SOME_ID있다 내가

C 테이블 의 열을 가리 키도록을 SOME_ID 변경할

이미 데이터가있는 경우 시스템을 손상시키고 잠재적으로 시스템을 손상시킬 수 있지만 본인의 경우 부모 테이블에 데이터가 없음을 알고 있습니다. 다른 테이블의 다른 열을 가리 키도록 외래 키를 간단히 전환 할 것입니다.

가급적이면 스크립트를 사용하고 싶습니다. 당신이 말한 때문에

+1

체크 아웃이 [1]이 도움이 될 수있다 [외부 키 참조 행동을 변경]. [1] : http://stackoverflow.com/questions/3359329/how-to-change-the-foreign-key-referential-action-behavior?rq=1 –

답변

0

, 당신은 이미

당신은 당신의 이전 테이블에 외래 키 제약 조건을 삭제해야합니다 ...이 일의 의미를 알고있다. 이 그런 다음 새 테이블 여기

에 합류 새로운 외래 키 제약 조건을 생성하는 예입니다

-- create test tables 
create table A (column1 bigint primary key, column2 varchar(255)) 
create table B (column1 bigint primary key, column2 varchar(255), column3 bigint) 
create table C (column1 bigint primary key, column2 varchar(255), column3 bigint) 
alter table B add constraint fk_B_A foreign key (column3) references table1(column1) 

-- change the constraints like this 
alter table B drop constraint fk_B_A 
alter table C add constraint fk_C_A foreign key (column3) references table1(column1) 

-- drop test table 
drop table A 
drop table B 
drop table C