Oswaldo escribió:

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

Hola, no tengo claro que esto sea un bug, pero como es un caso de borde,
siéntete libre de reportarlo y ver qué opinan los desarrolladores.

El problema es que la idea de poner restricciones NOT NULL a un dominio
no está muy bien definida.  Si en cambio pones un NOT NULL en la
definición de la columna de la tabla, no hay falla:

create domain t_dom2 as varchar default '';

create table test3 (id int, dom t_dom2 not null);
create table test4 (id int, dom t_dom2 not null);

insert into test4 (id) values (1);
update test4 set dom = (select dom from test3 where test3.id = test4.id);
-- el update da un error
select * from test4;

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

-
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

Responder a