Tenho uma tabela - Lead.Metadata
- com uma coluna chamada meta
que é do tipo JSON e uma coluna gerada:
cycle VARCHAR(255) AS (JSON_UNQUOTE(meta->"$.cycle"))
O problema é que quando faço isso UPDATE Lead.Metadata SET cycle = 'MONTHLY'
recebo este erro:
Código de erro: 3105. O valor especificado para a coluna gerada 'cycle' na tabela 'Metadata' não é permitido.
Não entendo. ciclo é um VARCHAR(255)
e 'MONTHLY'
deve se encaixar nisso.
Alguma ideia?
(além disso, para sua informação, a base de código é uma base de código legada; a estrutura do banco de dados não é ótima, mas consertar isso é um projeto maior)
Sua coluna
cycle
é uma coluna gerada, não pode ser atualizada diretamente.Os valores de uma coluna gerada são computados a partir de uma expressão incluída na definição da coluna.
Em resumo: coluna gerada é um
expression
.Atualize a coluna principal e esta coluna será recalculada automaticamente.
violino
Não é sobre ajuste. O problema é que
MONTHLY
não é uma string JSON entre aspas. Você teria que usar'"MONTHLY"'
para incorporar aspas literais na coluna.Você não queria que essa coluna fosse JSON?