El 03/05/2013 16:40, Martín Marqués escribió:
El día 3 de mayo de 2013 08:43, Oswaldo <lis...@soft-com.es> escribió:
Hola,
Creo que he detectado un bug, pero antes de reportarlo os agradecería
comprobaseis si la demostración es correcta y si también sucede en otras
versiones de postgres. También desconozco si es un bug ya conocido.
[.....]
Para reproducirlo ejecutar esta secuencia:
begin;
create domain t_dom as varchar default '' not null;
create table test1 (id int, dom t_dom);
create table test2 (id int, dom t_dom);
insert into test2 (id) values (1);
update test2 set dom = (select dom from test1 where test1.id = test2.id);
select * from test2;
test1 no tiene filas, por lo tanto la consulta del sub-query "select
dom from test1 where test1.id = test2.id" retornará 0 filas,
insertando un NULL.
Una de las cosas que debe saber cualquier desarrollador que trabaje
con SQL es tener MUCHO cuidado con los valores Nulos ya que a veces
son impredecibles.
En el resultado final la columna 'dom' tiene un valor NULL cuando según las
reglas definidas esto no deberia ser posible y se deberia haber producido
una excepción.
No. Con ese UPDATE, el valor debe ser NULL.
Exacto el update inserta un null, pero la columna esta definida como
tipo 't_dom' el cual no debe admitir nulos. Si en vez de ese update
haces este: "update test2 set dom=NULL;" si arroja el error de la que la
columma dom no admite nulos lo cual es correcto.
--
Oswaldo
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda