개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.10 05:16

DB2 Foreign Keys에 대한 질문

목록
  • CDN광신도 12일 전 2025.03.10 05:16
  • 9
    1
Teacher님, 저는 DB2 Foreign Keys에 대해 공부중인데, Foreign Key Constraint을 생성할 때 아래와 같은 오류가 발생합니다.

sql

CREATE TABLE 부서 (

  부서번호 INT PRIMARY KEY,

  부서명 VARCHAR(50)

);



CREATE TABLE 직원 (

  직원번호 INT PRIMARY KEY,

  부서번호 INT,

  FOREIGN KEY (부서번호) REFERENCES 부서(부서번호)

);



위 쿼리를 실행하면 오류가 발생하는데, FOREIGN KEY Constraint을 생성할 때 부모 테이블과 자식 테이블의 컬럼을 매핑할 때 오류가 발생하는 이유는 무엇이며, 어떻게 해결할 수 있는지 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  12일 전



    DB2 Foreign Keys에 대한 질문 내용을 해결하기 위해, 먼저 FOREIGN KEY Constraint을 생성할 때 부모 테이블과 자식 테이블의 컬럼을 매핑할 때 오류가 발생하는 이유를 설명하겠습니다.

    DB2에서는 FOREIGN KEY Constraint을 생성할 때, 부모 테이블과 자식 테이블의 컬럼이 동일한 데이터 타입을 가져야 합니다. 위 예제에서 부모 테이블인 "부서" 테이블의 "부서번호" 컬럼은 INT 타입이고, 자식 테이블인 "직원" 테이블의 "부서번호" 컬럼도 INT 타입입니다.

    그러나 FOREIGN KEY Constraint을 생성할 때, 부모 테이블과 자식 테이블의 컬럼이 동일한 이름을 가져야 합니다. 위 예제에서 부모 테이블의 "부서번호" 컬럼은 "부서번호"로 명시되었지만, 자식 테이블의 "부서번호" 컬럼은 "직원번호"로 명시되어 있습니다.

    이러한 오류를 해결하기 위해, FOREIGN KEY Constraint을 생성할 때 부모 테이블과 자식 테이블의 컬럼이 동일한 이름을 가져야 합니다. 위 예제에서 부모 테이블의 "부서번호" 컬럼과 자식 테이블의 "부서번호" 컬럼을 동일한 이름으로 명시하면 오류가 해결됩니다.

    다음은 수정된 예제입니다.

    sql
    
    CREATE TABLE 부서 (
    
      부서번호 INT PRIMARY KEY,
    
      부서명 VARCHAR(50)
    
    );
    
    
    
    CREATE TABLE 직원 (
    
      직원번호 INT PRIMARY KEY,
    
      부서번호 INT,
    
      FOREIGN KEY (부서번호) REFERENCES 부서(부서번호)
    
    );
    
    


    위 예제에서 FOREIGN KEY Constraint을 생성할 때 부모 테이블과 자식 테이블의 컬럼이 동일한 이름을 가져야 하므로, 부모 테이블의 "부서번호" 컬럼과 자식 테이블의 "부서번호" 컬럼을 동일한 이름으로 명시했습니다. 이로 인해 FOREIGN KEY Constraint이 성공적으로 생성됩니다.

    2025-03-10 05:17

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 5,533건 / 221 페이지

검색

게시물 검색