2013-12-08 4 views
-1

기본 키가 5 개의 테이블에 외래 키가 있습니다.이 기본 키 필드의 값을 변경해야합니다. 쿼리는 무엇입니까?다른 테이블의 외래 키인 한 테이블의 기본 키를 업데이트하십시오.

   Table1 >> fields: tbl1ID(pk, bigint), Desc(nvarchar(50)) 
      Table2 >> fields: tbl2ID(pk, bigint),tbl1ID(fk, bigint), Desc(nvarchar(50)) 
      Table3 >>.... 
      . 
      . 
      . 

가 나는 tbl1ID = 1로 설정하고 지금은이 tbl1ID = 100001, 처럼 변경해야하지만,이 필드가 다른 테이블과 관련이 있기 때문에 나는 캔트했습니다.

모두 변경 가능합니까?

+0

우리는 표를 참조 할 필요가 자식 테이블에 계단식 것이다 있도록 ON UPDATE CASCADE 옵션으로 외래 키를 구성하는 것입니다 구조를 사용하여 변경해야하는 '기본 키 필드의 값'을보다 잘 이해할 수 있습니다. – cerd

답변

0

foreign_key_checks = 0을 잠시 세션 에 일시적으로 설정하면됩니다.

SET FOREIGN_KEY_CHECKS = 0; 
UPDATE TABLE_A INNER JOIN TABLE_B ON TABLE_B.PKID = TABLE_A.PKID 
SET TABLE_B.PKID = 'NEW_VALUE', TABLE_A.PKID = 'NEW_VALUE' 
WHERE TABLE_A.PKID = 'OLD_VALUE'; 

또 다른 옵션은 기본 키는 부모 테이블에 업데이트되는 경우가

관련 문제