Re: [pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5
Obrigado pelo esclarecimento, vou ter que ajustar isso mesmo. Esse modelo tem 11 anos, foi feito no postgres 8.3 e na época eu não tinha noção nenhuma do que estava fazendo. Até a versão 9.0, embora a modelagem fosse falha o postgres não se importava com isso e funcionava normalmente. Acredito que tenha sido uma correção na versão 9.5 . Em 24/01/2017 18:21, Euler Taveira escreveu: On 24-01-2017 16:43, Irineu Raymundo wrote: Migrei do postgres 9.0 para o 9.5 e algumas contraints que referenciavam colunas do tipo varchar de tamanhos diferentes não aceitam mais o valor. Isso não tem haver com a migração. A sua modelagem está falha. Não se usa tipos (e seus tamanhos, se tiver) diferentes em chaves (a não ser que saiba o que está fazendo). Há alguma coisa q possa ser feita além de dropar as visões, rules destas tabelas e modificar os types dos campos? A correção é alterar o tipo de uma das tabelas para que eles voltem a ficar iguais novamente. Isso pode envolver corrigir outras partes do modelo. ERROR: value too long for type character varying(7) CONTEXT: SQL statement "UPDATE ONLY "com_02_01_07_a1_a1" SET "cod_material" = $1 WHERE $2::pg_catalog.text OPERATOR(pg_catalog.=) "cod_material"::pg_catalog.text" Esse erro é consequência de uma atualização em ind_01_08.codigo com uma string maior do que 7 caracteres. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5
On 24-01-2017 16:43, Irineu Raymundo wrote: > Migrei do postgres 9.0 para o 9.5 e algumas contraints que > referenciavam colunas do tipo varchar de tamanhos diferentes não aceitam > mais o valor. > Isso não tem haver com a migração. A sua modelagem está falha. Não se usa tipos (e seus tamanhos, se tiver) diferentes em chaves (a não ser que saiba o que está fazendo). > Há alguma coisa q possa ser feita além de dropar as visões, rules destas > tabelas e modificar os types dos campos? > A correção é alterar o tipo de uma das tabelas para que eles voltem a ficar iguais novamente. Isso pode envolver corrigir outras partes do modelo. > ERROR: value too long for type character varying(7) > CONTEXT: SQL statement "UPDATE ONLY "com_02_01_07_a1_a1" SET > "cod_material" = $1 WHERE $2::pg_catalog.text OPERATOR(pg_catalog.=) > "cod_material"::pg_catalog.text" > Esse erro é consequência de uma atualização em ind_01_08.codigo com uma string maior do que 7 caracteres. -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5
Olá prezados, Migrei do postgres 9.0 para o 9.5 e algumas contraints que referenciavam colunas do tipo varchar de tamanhos diferentes não aceitam mais o valor. Há alguma coisa q possa ser feita além de dropar as visões, rules destas tabelas e modificar os types dos campos? Qualquer ajuda é bem vinda. Agradecido. Irineu Raymundo Exemplo: ERROR: value too long for type character varying(7) CONTEXT: SQL statement "UPDATE ONLY "com_02_01_07_a1_a1" SET "cod_material" = $1 WHERE $2::pg_catalog.text OPERATOR(pg_catalog.=) "cod_material"::pg_catalog.text" CREATE TABLE ind_01_08 ( codigo character varying(19) NOT NULL, nome character varying(250) NOT NULL, CONSTRAINT ind_01_08_pkey PRIMARY KEY (codigo) ); CREATE TABLE com_02_01_07_a1_a1 ( cod_cor integer, grid_linha integer, cod_material character varying(7), cod_comb integer, CONSTRAINT com_02_01_07_a1_a1_pkey PRIMARY KEY (cod_comb,cod_material), CONSTRAINT com_02_01_07_a1_a1_cod_material_fkey FOREIGN KEY (cod_material) REFERENCES ind_01_08 (codigo) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION ); ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint para valer a partir do momento da criação
Em 17 de junho de 2013 21:18, Carlos Antônio Pereira carlosanto...@utivida.com.br escreveu: Ok, Euler. Obrigado pela dica e desculpe pelo sequestro. -Mensagem Original- From: Euler Taveira Sent: Monday, June 17, 2013 8:51 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Constraint para valer a partir do momento da criação On 17-06-2013 19:22, Carlos Antônio Pereira wrote: [Não sequestre um assunto, ou seja, não clique em responder e remove a discussão anterior. Ao invés disso, copie o endereço da lista e produza um *novo* email. É tão difícil fazer isso?] No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Sim. Porém, somente a partir da 9.1 [1]. ALTER TABLE foo ADD table_constraint NOT VALID [1] http://www.postgresql.org/**docs/current/static/sql-**altertable.htmlhttp://www.postgresql.org/docs/current/static/sql-altertable.html -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento __**_ pgbr-geral mailing list pgbr-geral@listas.postgresql.**org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geralhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral __**_ pgbr-geral mailing list pgbr-geral@listas.postgresql.**org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geralhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Bom dia Pessoal. Mas a Opção NOT VALID, não irá validar a constraint, exemplo: se vc criar uma chave extrangeira, ele nao irá verificar se existe a integridade na tabela referenciada pela FK. A Opção que existe no oracle acho que não é bem essa. -- Douglas Fabiano Specht ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Constraint para valer a partir do momento da criação
Boa noite, pessoal. No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Att Carlos___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint para valer a partir do momento da criação
On 17-06-2013 19:22, Carlos Antônio Pereira wrote: [Não sequestre um assunto, ou seja, não clique em responder e remove a discussão anterior. Ao invés disso, copie o endereço da lista e produza um *novo* email. É tão difícil fazer isso?] No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Sim. Porém, somente a partir da 9.1 [1]. ALTER TABLE foo ADD table_constraint NOT VALID [1] http://www.postgresql.org/docs/current/static/sql-altertable.html -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint para valer a partir do momento da criação
Ok, Euler. Obrigado pela dica e desculpe pelo sequestro. -Mensagem Original- From: Euler Taveira Sent: Monday, June 17, 2013 8:51 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Constraint para valer a partir do momento da criação On 17-06-2013 19:22, Carlos Antônio Pereira wrote: [Não sequestre um assunto, ou seja, não clique em responder e remove a discussão anterior. Ao invés disso, copie o endereço da lista e produza um *novo* email. É tão difícil fazer isso?] No Oracle existe a possibilidade de se criar constraints que valerão para novos registros inseridos/alterados no BD. Alguém pode me dizer se é possível fazer a mesma implementação no PostgreSQL? Sim. Porém, somente a partir da 9.1 [1]. ALTER TABLE foo ADD table_constraint NOT VALID [1] http://www.postgresql.org/docs/current/static/sql-altertable.html -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] constraint
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
Re: [pgbr-geral] constraint
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))) É uma restrição bem complicadinha, né? Como ela é composta de vários or, então você pode criar uma restrição para cada linha da sua original, com nomes diferentes. Pode ser um facilitador, mas não sei o desempenho desta idéia. Talvez, se você precisa de realmente uma excelente descrição de qual foi o erro, fazer um gatilho (trigger) do tipo BEFORE INSERT OR UPDATE pode ser uma idéia mais interessante. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
Em 30-01-2012 12:16, Flavio Henrique Araque Gurgel escreveu: Como ela é composta de vários or, então você pode criar uma restrição para cada linha da sua original, com nomes diferentes. É possível uma restrição para cada linha? Se eu digo que o 'cod' tem de ser Y, depois já não vou poder adicionar outra que pode ser X, ou estou errado? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
Como ela é composta de vários or, então você pode criar uma restrição para cada linha da sua original, com nomes diferentes. É possível uma restrição para cada linha? Se eu digo que o 'cod' tem de ser Y, depois já não vou poder adicionar outra que pode ser X, ou estou errado? Desculpe, fiz uma confusão absurda. Várias restrições se comportam como lógica E e não OU. Todas tem de ser verdadeiras. Portando, minha idéia de várias restrições pode complicar sua vida. Melhor ficar com a idéia do gatilho mesmo. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
Sem problema, mas eu ao fazer um trigger a ideia é que ele verifica se cumpre os requisitos através do check? e como ele dá a resposta do erro mais pormenorizadamente? Sou um bocado leigo Obrigado Em 30-01-2012 12:25, Flavio Henrique Araque Gurgel escreveu: Como ela é composta de vários or, então você pode criar uma restrição para cada linha da sua original, com nomes diferentes. É possível uma restrição para cada linha? Se eu digo que o 'cod' tem de ser Y, depois já não vou poder adicionar outra que pode ser X, ou estou errado? Desculpe, fiz uma confusão absurda. Várias restrições se comportam como lógica E e não OU. Todas tem de ser verdadeiras. Portando, minha idéia de várias restrições pode complicar sua vida. Melhor ficar com a idéia do gatilho mesmo. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
Sem problema, mas eu ao fazer um trigger a ideia é que ele verifica se cumpre os requisitos através do check? Você mantém suas restrições normalmente. e como ele dá a resposta do erro mais pormenorizadamente? O gatilho chama uma função que checa seus dados antes de irem pra tabela. Sou um bocado leigo Então você terá de estudar um pouco sobre gatilhos e funções no PostgreSQL pra fazer o que estou sugerindo. Se tiver urgência, talvez tenha de contratar ajuda. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
será que podia só dar mais umas dicas sobre a função? Obrigado Em 30-01-2012 12:54, Flavio Henrique Araque Gurgel escreveu: Sem problema, mas eu ao fazer um trigger a ideia é que ele verifica se cumpre os requisitos através do check? Você mantém suas restrições normalmente. e como ele dá a resposta do erro mais pormenorizadamente? O gatilho chama uma função que checa seus dados antes de irem pra tabela. Sou um bocado leigo Então você terá de estudar um pouco sobre gatilhos e funções no PostgreSQL pra fazer o que estou sugerindo. Se tiver urgência, talvez tenha de contratar ajuda. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] constraint
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
[pgbr-geral] Constraint Check
Olá, Não estou conseguindo adicionar um check para um campo definido como Numeric [1,0] para que somente sejam válidos os algarismos 1, 2, 3 ou 4. Por favor, como faço isso? Uso PG 8.2.5. Obrigado, Paulo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint Check
2008/3/13, Paulo Nievierowski [EMAIL PROTECTED]: Não estou conseguindo adicionar um check para um campo definido como Numeric [1,0] para que somente sejam válidos os algarismos 1, 2, 3 ou 4. Por favor, como faço isso? Uso PG 8.2.5. Que tal passar o seu comando e a mensagem de erro recebida? Ou olhar http://postgresql.org./docs/ -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED] +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803 +55 (11) 5685 2219MSN: msnim:[EMAIL PROTECTED] ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Constraint Check
Paulo Nievierowski escreveu: Não estou conseguindo adicionar um check para um campo definido como Numeric [1,0] para que somente sejam válidos os algarismos 1, 2, 3 ou 4. Por favor, como faço isso? Uso PG 8.2.5. bdteste=# CREATE TEMPORARY TABLE foo( bdteste(# bar numeric(1,0) CHECK(bar = 0 AND bar = 9)); CREATE TABLE bdteste=# INSERT INTO foo VALUES(10); ERRO: estouro de campo numeric DETALHE: Um campo com precisão 1, escala 0 deve arredondar para um valor absoluto menor do que 10^1. bdteste=# INSERT INTO foo VALUES(-1); ERRO: novo registro da relação foo viola restrição de verificação foo_bar_check Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral