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
