Leandro DUTRA wrote: >> Os domínios conseguem de fato manter integridade sobre as operações? > > Sim, de uma maneira muito simples: definem-se as restrições de > integridade (CONSTRAINTs) sobre os DOMAINs — NOT NULL, CHECK, mesmo > DEFAULT que não é uma restrição de integridade. Não lembro se cabe > FOREIGN KEY também. > O problema que vejo em uso de domínio ao invés do tipo é que o PostgreSQL não se comporta "bem" na transformação domínio <-> tipo em algumas partes (como planejador, otimizador). Digo isso porque já vi consultas [sub|super]estimadas com uso de domínios.
>> Não que esteja querendo ser chato, mas esse tipo de entendimento é >> importante inclusive para o nosso VP. > Claro, mas em todas as traduções do PostgreSQL utilizamos restrição. ;) Vou adicionar como segunda opção. > Hm, na verdade o nosso elefante está ficando mais estrito, impedindo > operações que antes eram toleradas… o que ilustra como deve funcionar: > a restrição para comparação deveria ser implícita na própria definição > dos tipos. > Tenho que discordar neste ponto. O principal ponto de remover algumas comparações implícitas (com tipo text) na 8.3 [1] foi o retorno de resultados inesperados com o PostgreSQL fazendo suposições erradas (vide comentários no capítulo de conversão (aka 'casting') entre tipos em manuais de linguagens de programação interpretada). > Há algum tempo vi a documentação e me pareceu extremamente complicada. > Revi agora: ou fiquei menos burro, ou está mais simples mesmo. Mesmo > assim, não me pareceu prático o suficiente para uso generalizado; > talvez eu precisasse dum bom tutorial para ser iluminado. > Sim, na verdade era bem mais complicado criar um tipo. A implementação melhorou bastante. > Talvez você tenha exemplos melhores que a da documentação, com > restrições e tudo o mais? Ou realmente o caminho seria um combinação > de tipos e DOMAINs? Adoro como o ISO SQL confunde os conceitos… :-( > Exemplos de CREATE TYPE? No contrib está cheio de exemplos. Vale ressaltar que a implementação CREATE TYPE do PostgreSQL não tem nada a ver com a definida no ISO SQL (dá pra adivinhar o porquê, né?). Leo, e sobre a criação de tipos base com CREATE TYPE. Como você quer fazer a restrição (contenção)? cláusula INPUT fazendo a verificação dentro da função foo_in()? [1] http://archives.postgresql.org/pgsql-committers/2007-06/msg00071.php -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
