CREATE INDEX 구문에서는 WITH IGNORE NULL을 붙이면 널 무시 속성을 설정할 수 있는데, 방법은 코드 2-3과 같다.
코드 2-3 액세스에서 SQL로 인덱스를 만들 때 IGNORE NULL 설정
CREATE INDEX CustPhoneIndex
ON Customers (CustPhoneNumber)
WITH IGNORE NULL;
또 WITH DISALLOW NULL(이 옵션은 해당 컬럼의 필수(Required) 속성을 ‘예(Yes)’로 지정하지 않으면 UI로 설정할 수 없다)을 명시하면 인덱스에 널 값이 들어가는 것을 방지할 수 있다.
액세스는 모든 널 값을 동일하지 않다고 처리하므로 유일 인덱스 컬럼에도 NULL을 가진 로우를 여러 개 저장할 수 있다. 액세스에서 유별난 점은 Text 타입(VARCHAR와 동일)의 컬럼에 있는 값 끝에 붙은 공백을 자동으로 제거한다는 것이다. 따라서 UI에서 빈 문자열을 저장하면 액세스는 NULL을 저장한다. 기본키 컬럼에 빈 문자열을 저장하면 오류가 발생할 것이다.
마찬가지로 필수 속성이 ‘예’로 설정된 컬럼에 빈 문자열을 입력해도 오류가 발생하는데, 빈 문자열 허용(Allow Zero Length) 속성을 ‘예’로 설정하면 이 오류를 방지할 수 있다. 이렇게 설정하면 액세스는 빈 문자열을 NULL로 변환하지 않지만, UI나 SQL에서 여러분이 직접 빈 문자열을 큰따옴표로 감싸 입력해야 한다. 빈 문자열 허용 속성을 ‘예’로 설정한 컬럼에 빈 문자열을 입력하면 컬럼 값의 길이는 0이 된다.