MySQL Como inserir um novo registro ou atualizar um campo dependendo se ele existe?
-
19-09-2019 - |
Pergunta
Estou tentando implementar um sistema de classificação onde mantenho os dois campos a seguir em minha tabela de banco de dados:
classificação (a classificação atual) num_rates (o número de classificações enviadas até agora)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
as variáveis são do meu código PHP.
Então, basicamente, às vezes, a linha com uniqueCol não existe no banco de dados, então como posso fazer a instrução acima se existir e se não existir, faça algo assim:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
Solução
Dê uma olhada em INSERIR ...NA ATUALIZAÇÃO DE CHAVE DUPLICADA.
Deve ser algo assim:
INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
rating=((rating*num_rates)+$theRating)/num_rates,
num_rates=num_rates+1;
Certifique-se de ter um UNIQUE index
ou PRIMARY KEY
Nas suas uniqueCol
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow