기억하세요날씨그리고도시테이블제2장. 다음을 고려하십시오
문제: 누구도에 행을 삽입할 수 없도록 하고 싶습니다.날씨테이블이 없는 테이블
의 일치하는 항목도시테이블. 이것을 유지라고 합니다.참조 무결성당신의 데이터. 단순하게
데이터베이스 시스템은 (만약 있다면) 먼저 구현될 것입니다.
를 보고 있다도시테이블에
일치하는 레코드가 있는지 확인한 다음 삽입하거나
새로운 것을 거부날씨기록.
이 접근 방식은 많은 문제가 있고 매우 불편합니다.
그래서포스트그레SQL이 작업을 수행할 수 있는 대상은 다음과 같습니다.
당신.
테이블의 새로운 선언은 다음과 같습니다:
테이블 도시 생성(
city varchar(80) 기본 키,
위치 포인트
);
CREATE TABLE 날씨(
city varchar(80)은 도시(city)를 참조합니다.
temp_lo 정수,
temp_hi int,
진짜,
날짜 날짜
);
이제 잘못된 레코드를 삽입해 보십시오:
날씨 값에 삽입('Berkeley', 45, 53, 0.0, '1994-11-28');
오류: "weather" 테이블의 삽입 또는 업데이트가 외래 키 제약 조건 "weather_city_fkey"를 위반합니다. 세부정보: 키(도시)=(Berkeley)가 '도시' 테이블에 없습니다.
외래 키의 동작은 귀하의 요구에 맞게 미세하게 조정될 수 있습니다. 신청. 이 간단한 예를 넘어서는 것은 아닙니다. 튜토리얼이지만 참고만 하세요.PostgreSQL : 문서 : 8.3 : 토토 커뮤니티 정의12182_12366