DBAtlas · Atlas de operações de banco de dados

44000: with_check_option_violation

PostgreSQL

O que significa?

Um INSERT/UPDATE por meio de uma view definida WITH CHECK OPTION foi rejeitado porque a linha resultante não satisfaz mais a condição WHERE da view. A view impede a gravação de linhas que ficariam fora do seu próprio filtro.

Por que acontece?

Uma view atualizável está definida WITH CHECK OPTION e a escrita move a linha para fora da condição que define a view (por exemplo, definir uma linha como 'inactive' enquanto a view filtra status='active'). Uma verificação semelhante pode ser disparada em políticas de row-level security (RLS).

Como resolver

Garanta que os valores gravados satisfaçam a condição WHERE da view, ou execute a operação diretamente na tabela base em vez da view (se os privilégios permitirem). Se a regra de negócio permitir que a linha saia do filtro, redefina a view sem WITH CHECK OPTION. Para RLS, revise a expressão WITH CHECK da política.

Abrir no DBAtlas →

Mais entradas deste banco