2010-04-29 6 views
3

-moi si je me trompe, mais cette commande SQL:JavaDB commande SQL reduntant?

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

n'a pas besoin de la partie NOT NULL, comme une clé primaire est supposé, par défaut, ne pas être nulle.

N'est-ce pas le cas?

(je suis pas sécurisé pour tester juste et d'accord dans le résultat, la programmation est pleine de surprises à long terme)

J'utilise JavaDB/Derby.

Répondre

4

Oui, une clé primaire est une combinaison d'un index unique et d'une contrainte non nulle. Ce dernier est défini par la fonction standard SQL99 E141-08.

Il semble que dans une version plus ancienne de Derby il n'a pas été possible de créer des clés primaires à moins que les colonnes ont également été déclarées annulable:

> 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. 

Ce fut un bug et il a été fixed.

+1

Oh mon Dieu! Les licornes sont de retour! XD –