2011-08-27 3 views
0

Eh bien, je suis un peu perplexe ici, mais il semble être une question vraiment bête.Apache derby Double type de données - et en essayant de par défaut à "null"

J'essaye de créer une table qui a une double colonne qui est nulle par défaut. Ce que je reçois est une table avec une colonne double qui est 0 par défaut, et je n'ai aucune idée pourquoi.

La partie pertinente du code:

CREATE_TABLE_STATEMENT = "create table " + TABLE_NAME + " 
(id int not null generated always as identity constraint pk primary key, 
parentid int default null, title varchar(50), minimum double default null, 
maximum double default null, timeUnit double default null, 
comment varchar(150) default null)"; 

Et le correspondant "insert":

"insert into " + TABLE_NAME + " " + "(parentid, title) values (1, 'first')" 

Répondre

0

semble fonctionner très bien sur ma copie de Derby (voir ci-dessous).

Qu'est-ce qui vous fait penser que la valeur par défaut de null ne fonctionne pas correctement?

ij> create table xxx (id int not null generated always as identity constraint pk primary key, 
parentid int default null, title varchar(50), minimum double default null, 
maximum double default null, timeUnit double default null, 
comment varchar(150) default null) ; 
0 rows inserted/updated/deleted 
ij> describe xxx; 
COLUMN_NAME   |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& 
------------------------------------------------------------------------------ 
ID     |INTEGER |0 |10 |10 |AUTOINCRE&|NULL  |NO  
PARENTID   |INTEGER |0 |10 |10 |NULL  |NULL  |YES  
TITLE    |VARCHAR |NULL|NULL|50 |NULL  |100  |YES  
MINIMUM    |DOUBLE |NULL|2 |52 |NULL  |NULL  |YES  
MAXIMUM    |DOUBLE |NULL|2 |52 |NULL  |NULL  |YES  
TIMEUNIT   |DOUBLE |NULL|2 |52 |NULL  |NULL  |YES  
COMMENT    |VARCHAR |NULL|NULL|150 |NULL  |300  |YES  

7 rows selected 
ij> insert into xxx (parentid, title) values (1, 'first'); 
1 row inserted/updated/deleted 
ij> select * from xxx; 
ID   |PARENTID |TITLE            |MINIMUM    |MAXIMUM    |TIMEUNIT    |COMMENT                               
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
1   |1   |first            |NULL     |NULL     |NULL     |NULL                                

1 row selected 
+0

Eh bien, ce fut ma première fois en utilisant derby alors je l'ai identifiée comme étant le suspect immédiatement, mais appearently était le code Java j'ai utilisé pour interroger les données - j'utilise la méthode getDouble() de ResultSet, qui retourne 0,0 en cas de SQL-NULL (comment stupide est-ce?!). Pour résoudre le problème, j'utilise simplement getObject et lance le résultat. – Ehud

Questions connexes