복붙노트

[SQL] 다른 데이터베이스에서 테이블에 외래 키

SQL

다른 데이터베이스에서 테이블에 외래 키

나는 SQL 서버에 두 개의 데이터베이스를 가지고 내가 모두 데이터베이스에 다른 테이블의 외래 키를 보유하고 중요한 큰 테이블에 대한 공통 테이블이있다. 문제는 표가 DatabaseA에, 그리고 나는 DatabaseB에서이 테이블에 외래 키를 참조 할 필요가있다.

나는 어떻게 이것을 달성하기 위해 가장 좋은 방법은 그래서 SQL은 데이터베이스 간 참조 무결성을 지원하지 않습니다 알아? 나는 하나의 데이터베이스에 두 개의 데이터베이스와 메이크업을 함께 생각하고 -는 것이 문제가되지 제외하고 복잡성의 증가에서.

어떤 제안?

해결법

  1. ==============================

    1.당신은 단지 FK 하나 DATBASE에 두 테이블을 유지하고 사용할 수 있습니다 - 내가 할 수 있다면 나는이 일을 피할 것인가?

    당신은 단지 FK 하나 DATBASE에 두 테이블을 유지하고 사용할 수 있습니다 - 내가 할 수 있다면 나는이 일을 피할 것인가?

    부모와 자식 테이블이 다른 데이터베이스에 있습니다.

    이 상황에서 외부 키를 사용할 수는 없지만, 해결 방법이 있습니다 - 당신이 점검 제한 조건에 싸여 중 트리거 또는 UDF를 사용할 수 있습니다. 어느 쪽이든, 데이터 무결성은 완전 방수되지 않습니다 : 부모 테이블 충돌 및 백업에서 복원와 데이터베이스, 당신은 쉽게 고아로 끝날 수있는 경우.

    트리거에 의해 부모 - 자식 관계 시행.

    같은 트리거가 발생하지 않는 꽤 몇 가지 상황이 있습니다 :

    · 테이블은 삭제됩니다.

    · 테이블입니다 잘립니다.

    · 중첩 및 / 또는 재귀 트리거에 대한 설정은 발사에서 트리거를 방지합니다.

    또한 트리거는 올바르지 않을 수 있습니다. 어느 쪽이든, 당신은 당신의 데이터베이스에 고아로 끝날 수 있습니다.

  2. ==============================

    2.여기에 SSIS 가져 오기 / 내보내기 마법사를 사용하는 방법에 대한 문서입니다 :

    여기에 SSIS 가져 오기 / 내보내기 마법사를 사용하는 방법에 대한 문서입니다 :

    http://www.databasejournal.com/features/mssql/article.php/3580216/SQL-Server-2005-Import--Export-Wizard.htm

    이 작업을 수행하는 가장 쉬운 방법은 당신을위한 가장 편리한 어떤 형식으로 (필자는 두 가지의 작은을 사용하는 것) 하나의 데이터베이스를 내 보낸 다음 다른로 가져 오는 것입니다. 한 테이블 이름이 모두 다른만큼,이 문제를 제시해서는 안된다.

  3. ==============================

    3.트리거는 다른 데이터베이스에 대한 참조 무결성을 적용 쓸 수 있습니다.

    트리거는 다른 데이터베이스에 대한 참조 무결성을 적용 쓸 수 있습니다.

  4. from https://stackoverflow.com/questions/1424327/foreign-keys-on-table-from-different-database by cc-by-sa and MIT license