2010-05-05 4 views
2

테이블 (열 FloorNumBuildingID) 및 ApartmentBuilding 테이블 (열 NumFloors)이있는 SQL Server 데이터베이스가 있습니다. Apartment.FloorNumApartmentBuilding.NumFloors보다 큰지 확인하기 위해 SQL Server UI를 사용하여 제약 조건을 설정하는 방법이 있습니까? 테이블 간의 SQL Server 제약

나는이 시도 :

FloorNum > ApartmentBuilding.NumFloors 

을하지만 지금은 내가 어떻게 든 BuildingID에 열을 가입해야 실현,하지만 난 아무 생각이 어떻게 할 수 없습니다해야한다는 제약 조건 내에서.

도움 주셔서 감사합니다.

답변

3

다른 테이블의 데이터가 필요하기 때문에 CHECK CONSTRAINT를 사용하여이 작업을 수행 할 수 없습니다. INSERT/UPDATE trigger으로 처리 할 수 ​​있습니다.

ApartmentBuilding 테이블에서
+0

나는 그것을 할 방법을 알아낼 수없는 의심 할 여지을 추가! 낭비를 막아 주셔서 감사합니다 – chama

0
  1. (참조 (BuildingID, NumFloorsInBuilding)에 BuildingID을 외래 키를 추가, 아파트 테이블에서 열 NumFloorsInBuilding
  2. 를 추가, (BuildingID, NumFloors) 아파트 테이블에서
  3. 에 UNIQUE 제약 조건을 추가, NumFloors). 이는 NumFloorsInBuilding이 항상 부모 테이블의 NumFloors와 동일 함을 보장합니다. 아파트 테이블에서
  4. , CHECK (FloorNum < NumFloorsInBuilding)
+1

외래 키 참조를 추가하는 것만으로도 아파트 테이블의 'BuildingID' 열을 마술처럼 채울 수 없습니다. 물론 - 수동으로 최대 값을 추가하는 경우 각 아파트에 대한 층수는 CHECK 제약 조건이 케이크 조각이지만 빌딩 테이블에 이미있는 정보가 불필요하게 중복됩니다 .... –

+0

분명히 여기에 정보가 중복되지 않습니다. 단단한 무결성이 필요한 경우 이것이 유일한 방법입니다. 유효하지 않은 데이터를 허용하는 경우 트리거를 실행하십시오. –