Código 22 Do Prisma
Enfrentar o código 22 do Prisma é comum ao trabalhar com migrations e esquemas no banco de dados; este guia resolve o problema com orientações práticas e exemplos claros.
O que é o código 22 do Prisma
O código 22 do Prisma indica uma violação de integridade referencial, geralmente quando você tenta inserir ou atualizar um registro que faz referência a outro registro inexistente na tabela relacionada. Isso significa que o banco de dados recusou a operação porque a chave estrangeira não pode apontar para um valor inválido.
Como identificar rapidamente
Na prática, o erro aparece no console ou nos logs como um erro de banco de dados com a mensagem mencionando a violação da chave estrangeira. Você pode ver falhas em operações de create, update ou upsert ao usar Prisma Client, especialmente ao trabalhar com relações obrigatórias.

Requisitos e ferramentas necessárias
- Banco de dados compatível com chaves estrangeiras (PostgreSQL, MySQL, SQL Server, SQLite).
- Prisma CLI instalado globalmente ou como dependência de desenvolvimento.
- Prisma Client configurado e sincronizado com o banco.
- Um modelo Prisma com relações bem definidas, especialmente
@relationereferences.
Passo a passo para corrigir o erro
- Localize o registro que está causando a falha na operação de gravação.
- Verifique se o valor passado para a chave estrangeira existe na tabela pai correspondente.
- Se o valor não existir, crie o registro pai necessário antes de inserir o registro filho.
- Use transações sempre que precisar criar ou atualizar vários registros relacionados de uma só vez.
- Considere tornar a relação opcional (
?) se o vínculo com o registro pai não for obrigatório no momento. - Atualize o banco com
prisma migrate devcaso precise ajustar o esquema para permitir nulos ou adicionar registros padrão. - Valide os dados de entrada no código antes de chamar o Prisma Client para evitar enviar referências inválidas.
- Teste as operações em ambiente de desenvolvimento antes de aplicar em produção.
Exemplo de modelo Prisma causando o problema
Um modelo que pode gerar o código 22 do Prisma quando usado incorretamente:
model Author {
id Int @id @default(autoincrement())
name String
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
authorId Int
author Author @relation(fields: [authorId], references: [id])
}
Neste caso, criar um Post com um authorId que não existe na tabela de Author retornará o erro.
Boas práticas para evitar o erro
- Sempre valide a existência do registro pai antes de associar.
- Use transações para grupos de operações relacionadas.
- Defina relações opcionais quando o vínculo não for crítico.
- Adicione validações no nível de aplicação e no banco de dados.
- Use seeds ou dados de exemplo para testar cenários de referência.
Quando considerar relações opcionais
Tornar um campo de chave estrangeira opcional pode ser a solução mais prática quando o vínculo com o registro pai não é obrigatório ou quando os dados podem ser criados em momentos diferentes. Isso reduz a rigidez e evita o código 22 do Prisma em cenários de carga assíncrona ou em etapas de processamento separadas.

Perguntas frequentes
Por que ocorre o erro código 22 do Prisma ao criar um registro?
O erro acontece porque você está tentando inserir um valor em uma chave estrangeira que não existe na tabela relacionada, violando a integridade referencial do banco de dados.
Posso corrigir o problema apenas alterando o modelo Prisma?
Alterar o modelo para tornar a relação opcional ou ajustar as constraints pode ajudar, mas você também precisa garantir que os dados enviados estejam alinhados com o esquema do banco.
Como posso depurar rapidamente esse erro no meu código?
Ative os logs no Prisma Client, inspecione a query SQL rejeitada e consulte o banco diretamente para verificar se os registros pai já existem.

Devo usar transações sempre que houver risco de código 22 do Prisma?
Sim, transações ajudam a manter a consistência ao criar ou atualizar vários registros relacionados, evitando que um pai falte durante o processo.
O que significa o código 21 e 22 no painel de instrumentos Chevrolet Onix Prisma Spin Cobalt Sonic
... para você o que significa e o código 121 é verificar lâmpada da lanterna dianteira esquerda e o 22 da lanterna dianteira direita ...