Em 25 de janeiro de 2016 02:01, [email protected]
<[email protected]> escreveu:
> ...
>
> Fiz um simples SELECT para descobrir o que estava acontecendo:
>
> SELECT * FROM integrations.accounts WHERE qb_settings IS NULL OR
> xero_settings IS NULL OR freshbooks_settings IS NULL OR myob_settings IS
> NULL OR ppy_settings IS NULL;
>
> Recebi 59 rows. Ou seja, achei o problema. Eu tenho parâmetros nulos que
> violam o meu "CHECK"
>
> PERGUNTA:
>
> Como posso executar o comando com sucesso? O que tenho que fazer?
>
> Não estou pedindo a barbada. Apenas se puder ser mais claro no que
> eu preciso e me apontar uma direcão, iria ajudar bastante. Obrigado.

Corrija os dados, se é uma restrição para a aplicação esta poderá não
funcionar corretamente já que não há integridade nos dados certo? Peça
auxilio para os desenvolvedores para que eles indiquem se você pode
setar algum valor mágico que a aplicação espera para os casos não
íntegros ou se eles são "sujeiras" e podem ser removidos.

Por outro lado, caso você queira arcar com todos os risco de manter
dados não íntegros e provavelmente ter que voltar neste ponto
novamente lá no futuro, você pode até recorrer a uma opção no ADD
CONSTRAINT, que consta na documentação do comando ALTER TABLE [1] e
reproduzo o trecho aqui:

"ADD table_constraint [ NOT VALID ]

This form adds a new constraint to a table using the same syntax as
CREATE TABLE, plus the option NOT VALID, which is currently only
allowed for foreign key and CHECK constraints. If the constraint is
marked NOT VALID, the potentially-lengthy initial check to verify that
all rows in the table satisfy the   constraint is skipped. The
constraint will still be enforced against subsequent inserts or
updates (that   is, they'll fail unless there is a matching row in the
referenced table, in the case of foreign keys; and they'll fail unless
the new row matches the specified check constraints). But the database
will not assume that the constraint holds for all rows in the table,
until it is validated by using the VALIDATE CONSTRAINT option."


A documentação do PostgreSQL é muito completa, aconselho-o a lê-la.
Mesmo que estejas atuando em algo pontual, leia pelo menos a
documentação do comando que você está usando pois ela vai tratar
dúvidas de sintaxe e em muitos casos te dar dicas. Por outro lado


[1] http://www.postgresql.org/docs/9.2/static/sql-altertable.html


-- 
Dickson S. Guedes
mail/xmpp: [email protected] - skype: guediz
http://github.com/guedes - http://guedesoft.net
http://www.postgresql.org.br
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a