Ja que voce tem os campos "cod", "localizacao" e desenho praticamente definidos, porque nao tenta usar relacionamentos para estes campos e na constraint voce verifica este relacionameto ? tipo:
ALTER TABLE elementos ADD CONSTRAINT elementos_mal_inseridos CHECK ( (( select xxx ..... xxx ) is NOT NULL ) AND/OR ETC...ETC ) tenta simplicar isto ... na pior das hipoteses use um trigger [1] e [2] [1] http://imasters.com.br/artigo/10644/postgresql/triggers_no_postgresql/ [2] http://www.postgresql.org/docs/9.1/static/sql-createtrigger.html 2012/1/30 Pedro Costa <pedrocostaa...@sapo.pt> > Pessoal eu tenho a seguinte constraint que segue em baixo. É possível > que, em caso de erro, saibamos qual o campo que dá erro, ou mais > informações acerca do mesmo? > > Porque só dá o nome da constraint em questão e muitas vezes perde-se > muito tempo para descobrirmos o erro... > > Obrigado > > > > ALTER TABLE elementos ADD CONSTRAINT elementos_mal_inseridos CHECK ( > (cod='29e' and localizacao = 0 and desenho = 0) or > (cod='1e' and localizacao = 0 and desenho = 0) or > (cod='8' and localizacao = 1 and desenho = 1) or > (cod='40' and localizacao = 1 and desenho = 1 and m2 is not null and m2 > <> 0 and ml is null) or > (cod='42' and localizacao = 1 and desenho = 1) or > (cod='43' and localizacao = 1 and desenho = 1 and ml is not null and ml > <> 0 and m2 is null) or > (cod='49' and localizacao = 1 and desenho = 1 and m2 is not null and m2 > <> 0 and ml is null) or > (cod='50' and localizacao = 1 and desenho = 1) or > (cod='52' and localizacao = 1 and desenho = 1) or > (cod='7' and localizacao IN (1,2) and desenho IN (1,2) and m2 is not > null and m2 <> 0 and ml is null) or > (cod='29' and localizacao IN (1,2) and desenho IN (1,2) and ml is not > null and ml <> 0 and m2 is null) or > (cod='30' and localizacao IN (1,2) and desenho IN (1,2) and ml is not > null and ml <> 0 and m2 is null) or > (cod='1a' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='1b' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='1c' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='1d' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='1f' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='2a' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='2b' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='2c' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='3' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='4' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='5' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='9' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='10' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='11' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='12' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='13' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='14' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='15' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='16' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='17' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='18' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='19' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='20' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='21' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='22' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='23' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='24' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='25' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='26' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='27' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='28' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='31' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='32' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='33' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='34' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='35' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='36' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='37' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='39' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='41' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='44' and localizacao IN (1,2) and desenho = 1) > or (cod='45' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='46' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='47' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='48' and localizacao IN (1,2) and desenho IN (1,2)) > or (cod='51' and localizacao IN (1,2) and desenho IN (1,2))) > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.com
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral