Re: [pgbr-geral] Constraint entre colunas tipo varchar de tamanhos diferentes postgres 9.5

2017-01-25 Por tôpico Irineu Raymundo

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

2017-01-24 Por tôpico Euler Taveira
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

2017-01-24 Por tôpico Irineu Raymundo

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

2013-06-18 Por tôpico Douglas Fabiano Specht
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

2013-06-17 Por tôpico Carlos Antônio Pereira
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

2013-06-17 Por tôpico Euler Taveira
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

2013-06-17 Por tôpico Carlos Antônio Pereira

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

2012-01-30 Por tôpico Pedro Costa
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

2012-01-30 Por tôpico Flavio Henrique Araque Gurgel
 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

2012-01-30 Por tôpico Pedro Costa
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

2012-01-30 Por tôpico Flavio Henrique Araque Gurgel
 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

2012-01-30 Por tôpico Pedro Costa
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

2012-01-30 Por tôpico Flavio Henrique Araque Gurgel
 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

2012-01-30 Por tôpico Pedro Costa
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

2012-01-30 Por tôpico Moisés P . Sena
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

2008-03-13 Por tôpico Paulo Nievierowski
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-03-13 Por tôpico Leandro DUTRA
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

2008-03-13 Por tôpico Osvaldo Rosario Kussama
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