아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
Metasight
Metasight21.04.16

[SQL] primary 키는 테이블당 하나만 가능하지 않나요?

제가 SQL을 공부를 하다가 이상한 점이 있어서 문의드립니다.

아래와 같은 예문이 있는데요.

CREATE TABLE sample (

no INTEGER NOT NULL,

sub_no INTEGER NOT NULL,

name VARCHAR(30),

CONSTRAINT pkeysample PRIMARY KEY (no, sub_no));

제가 알기로 한 테이블에 프라이머리 키는 1개만 지정되는 것으로 알고 있습니다. 위 예문은 프라이머리 키를 no과 sub_no 두개로 지정하는 듯한데요, 왜 문제가 없는 것일까요? 궁금합니다.

55글자 더 채워주세요.
답변의 개수4개의 답변이 있어요!
  • 개념을 잘못알고 계시는 듯합니다. PRIMARY KEY 가 하나만 생성이 가능한 것이고, PRIMARY KEY를 구성하는 컬럼은 여러개를 지정할 수 있습니다. 각 컬럼을 조합하여, 유니크한 Key 조합을 만드시는 겁니다. 위의 예문으로 다시 설명 드리면, 해당 Table 은 no, sub_no 를 통해 유니크한 Key 조합을 생성하여, 그 조합을 PRIMARY KEY 로 등록한 것입니다. PRIMARY KEY 조합을 2-3개 등록을 못하는 거지 조합 자체는 여러개의 컬럼을 지정하셔도 됩니다.


  • 안녕하세요.

    primary key는 말 그대로 하나만 지정이 가능합니다.

    하지만 테이블 생성 쿼리를 보면

    PRIMARY KEY (no, sub_no)

    두 필드의 조합으로 이루어져있죠? 즉, primary key의 조건이 두 필드의 쌍인격이죠

    예를들면 row값이

    no=1, sub_no=1 인 경우와

    no=1, sub_no=2 인 경우는 다르다는것이죠

    만약 PRIMARY KEY (no) 로만 설정했을 경우

    no=1, sub_no=1 인 값이 있고

    no=1, sub_no=2 인 값을 insert 하게 되면 기본키 제약조건에 의해 에러가 발새하게 됩니다.

    no=1은 테이블당 하나만 존재해야 하는데 이미 있기 때문이죠.

    즉 primary key를 2개를 설정한 것이 아니고

    필드 2개를 쌍으로 하나의 primary key가 설정된 것입니다. ^^


  • 안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.

    테이블은 오직 하나의 PK를 가질 수 있습니다. 그리고 오직 하나의 컬럼만 PK를 설정할 수 있다 라는 말은 없습니다. 질문자님이 올린 예문은 두 가지 컬럼을 조합하여 복합키로 Primary Key를 만드는 방법 입니다. 하나의 튜플에 두 가지 컬럼이 조합되어 하나의 키가 되는 것 입니다.

    답변이 도움이 됐으면 합니다. 좋은 하루 되세요!


  • 탈퇴한 사용자
    탈퇴한 사용자21.04.16

    안녕하세요

    primary key는 당연히 하나만 지정 가능합니다.

    아래 구문은 primary key를 하나만 설정했고, 컬럼을 여러개 선언한거는 복합 키로 설정한 겁니다.

    'pkeysample' 이라는 하나의 primary key에는 컬럼이 하나 이상 설정할 수 있습니다.

    CONSTRAINT pkeysample PRIMARY KEY (no, sub_no)