728x90
반응형
기본키
- 말 그대로 기본이 되는 키이다. 동일한 필드가 입력될 수 있기 때문에 이를 구분하기 위해 식별자를 만들어 주는 것이다.
외래키
- 테이블에서 다른 테이블의 기본 키를 참조할 때 사용하는 것이 외래키이다.
기본키(Primary Key) 생성
CREATE TABLE category(
category_id INTEGER PRIMARY KEY,
name TEXT;
)
- 위와 같은 방식으로 PRIMARY KEY를 생성할 수 있다.
CREATE TABLE category(
category_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT;
)
- AUTOINCREMENT를 사용하면 필드 값이 입력될 때 기본키 값이 하나씩 자동으로 증가하게 만들 수 있다.
외래키(Foreign Key) 생성
CREATE TABLE products(
category_id INTEGER,
available_product INT,
FOREIGN KEY (category_id) REFERENCES category(category_id)
);
- FOREIGN KEY (열 이름) REFERENCES 상위테이블(참조할 열 이름)
- 위처럼 작성하여 외래키를 생성할 수 있다. 주의할 점은 상위테이블이 이미 정의되어 있어야 하니 순서를 잘 확인해야 한다.
PRAGMA foreign_keys = 1;
- SQLite 일정 버전 이후로는 외래키를 활성화 시켜야 한다고 한다. 오류가 날 경우 위 코드를 입력해보자.
겪은 오류
DROP TABLE IF EXISTS category;
CREATE TABLE category(
category_id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
DROP TABLE IF EXISTS products;
CREATE TABLE products(
product_id INTEGER PRIMARY KEY AUTOINCREMENT, -- key 저장
name TEXT, -- 상품명
category_id INTEGER,
FOREIGN KEY (category_id) REFERENCES category(category_id)
price REAL,
available_product INT, -- 남은 재고
sales_product INT, -- 판매 수량
thumbnail TEXT, -- 썸네일 이미지 링크
);
- 테이블을 생성하여 외래키를 사용하려고 했다.
- 하지만 틀린 문법이 없음에도 불구하고 계속적으로 오류가 발생했다.
- 30분을 넘게 서치하고 고쳐본 결과... 허무한 결과였다. FOREIGN KEY는 가장 하단에 작성해야 오류가 나지 않는다.
- (원인은 아직도 모름..ㅠ)
728x90
반응형
'기타' 카테고리의 다른 글
RAG(검색 증강 생성)란? (0) | 2024.06.28 |
---|---|
[SQLite] 기본키 자동증가(AUTOINCREMENT) 초기화 (0) | 2024.02.20 |
[스프링부트/SpringBoot] 게시판 만들기 프로젝트(1) - 계획 수립, 환경 세팅 및 설정 (0) | 2023.09.25 |
Windows10에서 WSL2 우분투 설치하기 (0) | 2023.09.25 |
[인텔리제이/IntelliJ] 인텔리제이 한글판 적용 방법 (0) | 2023.09.23 |