Tipo de datos Apache derby Double - y tratando de establecerlo por defecto en "nulo"

Bueno, estoy un poco perplejo aquí, pero parece ser una pregunta realmente tonta.

Estoy intentando crear una tabla que tenga una columna doble que sea nula de forma predeterminada. Lo que obtengo es una tabla con una columna doble que es 0 por defecto, y no tengo idea de por qué.

La parte relevante del código:

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)";

Y el "inserto" correspondiente:

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

preguntado el 27 de agosto de 11 a las 19:08

1 Respuestas

Parece funcionar bien en mi copia de Derby (ver más abajo).

¿Qué te hace pensar que el valor predeterminado de null no funciona correctamente?

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

Respondido 28 ago 11, 00:08

Bueno, era la primera vez que usaba derby, así que lo etiqueté como el sospechoso inmediato, pero aparentemente era el código Java que usé para consultar los datos: uso el método getDouble () de ResultSet, que devuelve 0.0 en el caso de SQL-NULL ( ¡¿Qué tonto es eso ?!). Para resolver el problema, solo uso getObject y lanzo el resultado. - Aod

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.