개요
- NOT NULL 과 DEFAULT 를 동시에 쓸 필요가 있는가?
NOT NULL
CREATE TABLE simple_table (
name VARCHAR(30) NOT NULL
);
INSERT INTO simple_table (name) VALUES (); // 오류
INSERT INTO simple_table (name) VALUES (NULL); // 오류
- NULL 을 직접 입력하든, 아무것도 입력하지 않아서 NULL 값이 넘어가든 두 경우에 대해서 모두 오류를 생성한다.
DEFAULT
CREATE TABLE simple_table (
name VARCHAR(30) DEFAULT "person"
);
INSERT INTO simple_table (name) VALUES (); // person 입력
INSERT INTO simple_table (name) VALUES (NULL); // NULL 입력
- DEFAULT 가 NULL 값이면 알아서 “person” 으로 바꿔줄까?
- NULL 을 입력하면 값을 입력한 것으로 보기 때문에, DEFAULT 는 활성화되지 않는다.
NOT NULL, DEFAULT
CREATE TABLE simple_table (
name VARCHAR(30) NOT NULL DEFAULT "person"
);
INSERT INTO simple_table (name) VALUES (); // person 입력
INSERT INTO simple_table (name) VALUES (NULL); // 오류
- 둘 다 있는 경우에는 사용자가 값을 입력하지 않는 경우에는 알아서 DEFAULT 가 활성화되고, NULL 을 입력하는 경우 NOT NULL 이 활성화되어 오류가 발생하게 됩니다.