SQL 열 정의 : 통화이고 null이 아닙니까?
create / alter DDL 문에서 열을 정의하는 다음 구문을 여러 번 보았습니다.
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) NOT NULL DEFAULT "MyDefault"
질문은 오류를 지정하지 않았습니까? 즉, DEFAULT는 NOT NULL 이메일을 수신하지 않습니까?
DEFAULT
삽입 / 업데이트 문에 명시 적 값이 없을 때 삽입 될 값입니다. DDL에 NOT NULL
제약 조건 이 가정 해 보겠습니다.
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault"
그런 다음 존재를 발행 할 수 있습니다.
-- 1. This will insert "MyDefault" into tbl.col
INSERT INTO tbl (A, B) VALUES (NULL, NULL);
-- 2. This will insert "MyDefault" into tbl.col
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, DEFAULT);
-- 3. This will insert "MyDefault" into tbl.col
INSERT INTO tbl (A, B, col) DEFAULT VALUES;
-- 4. This will insert NULL into tbl.col
INSERT INTO tbl (A, B, col) VALUES (NULL, NULL, NULL);
또한,은 또한 사용할 당신 수 있습니다 DEFAULT
에서 UPDATE
받는 사람에 따라, 문 -1992 SQL 표준 :
-- 5. This will update "MyDefault" into tbl.col
UPDATE tbl SET col = DEFAULT;
-- 6. This will update NULL into tbl.col
UPDATE tbl SET col = NULL;
모든 데이터베이스가 SQL 표준 구문을 모두 지원하는 것은 아닙니다. NOT NULL
제약 조건을 추가하면 문에 오류가 발생 4, 6
하지만 1-3, 5
여전히 유효한 문입니다. 귀하의 질문에 대답하십시오. 아니요.
항상 null
.
NOT NULL
만들어졌습니다 후이 제한은 해당 행을 업데이트 할 수 없습니다 null
값
내 SQL 교사는 당신이 모두 지정하는 경우 말했다 DEFAULT
가치를 NOT NULL
선언하고 NULL
, DEFAULT
항상 전에 표현해야 NOT NULL
합니다 NULL
.
이렇게 :
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NOT NULL
ALTER TABLE tbl ADD COLUMN col VARCHAR(20) DEFAULT "MyDefault" NULL
나는 말하지 않을 것이다.
열이 null 값을 허용하는 경우 필드에 null 값을 삽입하는 것을 막을 수있는 방법은 없습니다. 내가 아는 한 재구성은 새 규칙을 만들 때만 적용됩니다.
null이 설정되지 않은 경우 오류가 발생하지 않은 경우 null 값을 삽입 할 수 없습니다.
널을 방지하기위한 안전 장치를 생각하십시오.
'ProgramingTip' 카테고리의 다른 글
단일성을 사용하여 명명 된 말을 생성자에 어떻게하면? (0) | 2020.11.11 |
---|---|
C ++ 0x와 C ++ 11의 차이점은 무엇입니까? (0) | 2020.11.11 |
pip / easy_install없이 pypi 모듈을 수동으로 설치하는 방법은 무엇입니까? (0) | 2020.11.11 |
가 무엇이 무엇이였습니까? (0) | 2020.11.11 |
현명한 gcc 경고 : 함수 반환 유형에 대한 유형 한정자 (0) | 2020.11.11 |