2017-11-28 5 views

답변

0

ANSI 표준에 따르면 UNIQUE 제약 조건은 중복 된 NULL이 아닌 값을 허용해서는 안되지만 사실 여러 개의 NULL 값을 허용합니다.

SQL 표준은 제약 조건의 하나 이상의 열이 NULL이지만 SQLite가이 규칙을 적용하지 않더라도 UNIQUE 제약 조건을 적용해야합니다.

1

SQLite는 NULL 값이 고유 제한 조건을 위반하거나 여러 개의 다른 주요 데이터베이스를 위반한다고 간주하지 않습니다. 이에 대한 SQLite 문서는 See here입니다.

따라서 NULL을 자리 표시 자로 사용하면 고유 제한 조건의 컨텍스트에서 의도 한대로 동작하지 않을 수 있습니다. 한 가지 가능한 해결 방법은 다른 자리 표시 자 값을 사용하는 것입니다 (예 : 대신 -1 다음 INSERT 문은 실패 :

INSERT INTO userstrings (user_id, cat_id, name_id) 
VALUES 
    (1, 1, -1), 
    (1, 1, -1); 

을 모두 NULL 되었습니까 name_id 값을 한 반면, 삽입은 성공했을 것이다.