2010-04-29 2 views
3

저를 수정하지만,이 SQL 명령 : 기본 키가 가정하자 그대로 JavaDB SQL 명령 reduntant? 만약 내가 잘못

create table MYTABLE (ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)) 

는 null이 아닌 것으로, 기본적으로는 NOT NULL 부분을 필요로하지 않습니다.

재발송되지 않습니까?

내가 JavaDB에서는/더비를 ​​사용하고

(나는 단지 그것을 테스트하고 결과에 동의 확보하고 있지 않다가, 프로그래밍은 장기적으로 놀라움으로 가득 차있다).

답변

4

예, 기본 키는 고유 인덱스와 null이 아닌 제약 조건의 조합입니다. 후자는 SQL99 표준 기능 E141-08에 의해 정의됩니다.

> PRIMARY KEY does not imply NOT NULL. Derby issues error message: 

ij> create table tab (i integer primary key); 
ERROR 42831: 'I' cannot be a column of a primary key or unique key because it 
can contain null values. 

이 버그이었고, 그것은 fixed을하고있다 :

이 컬럼도 널 (NULL) 선언 된 않는 더비의 이전 버전은 기본 키를 만들 수 없습니다 것을 보인다.

+1

오 마이 갓! 유니콘 돌아왔다! XD –