Só pra dar um UPDATE...

Após rodar o "contrário" da constraint, localizei as rows que estavam nul...

Verei com o desevolvimento se posso "setar" elas pra não null, dando um
simples UPDATE table SET field = 0 WHERE field IS NULL.

Caso não for possível, há outro meio de dar um DROP e um ADD na constraint?

Lucas



Lucas Possamai

- kinghost.co.nz
<http://forum.kinghost.co.nz/memberlist.php?mode=viewprofile&u=2&sid=e999f8370385657a65d41d5ff60b0b38>
- DigitalOcean <https://m.do.co/c/a0d31c597a03>

2016-01-25 17:01 GMT+13:00 [email protected] <[email protected]>:

>
>
>> > Eu acabei tendo retorno do comando que rodei, em outras tabelas:
>> > ...
>> > Porém, estou meio em dúvidas sobre o que fazer.
>>
>> Mantenha os dados íntegros, seja consistente. Estabeleça um padrão
>> para os registros que não estão íntegros e defina um valor padrão para
>> os mesmos, converse com os os colegas a sua volta, quem desenhou a
>> aplicação e tem conhecimento de como estes dados não-integros se
>> comportam na aplicação pode te ajudar a definir os valores padrões. Se
>> mesmo assim não existe um valor padrão mas existe uma regra de
>> integridade, a aplicação obviamente não vai funcionar com estes dados
>> e então para quê tê-los?
>>
>> Mas em nenhum momento use qualquer mecanismo de burlar a integridade.
>>
>>
>>
> Então.
> Ao rodar o meu .sql, recebi a seguinte mensagem:
>
> *Query:*
>
> ALTER TABLE integrations.accounts DROP CONSTRAINT IF EXISTS 
> cc_at_least_one_setting_needed,
>     ADD CONSTRAINT cc_at_least_one_setting_needed CHECK (("qb_settings" IS 
> NOT NULL) or
>                                                           ("xero_settings" IS 
> NOT NULL) or
>                                                           
> ("freshbooks_settings" IS NOT NULL) or
>                                                           ("myob_settings" IS 
> NOT NULL) or
>                                                           ("ppy_settings" IS 
> NOT NULL));
>
>
> ERROR:  check constraint "cc_at_least_one_setting_needed" is violated by
>> some row
>
>
> 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?
>
>
> Dickson S. Guedes
>
> 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.
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a