Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il une astuce pour permettre à MySQL d'ignorer une virgule de fin dans la clause SET d'une instruction UPDATE ?

À moins que vous ne souhaitiez dupliquer une valeur comme le suggère Igoel (ce qui peut ne pas être idéal si la valeur est longue), la réponse simple est non .

Une possibilité brièvement encourageante était l'utilisation de l'alias NEW pour représenter les valeurs entrantes, afin que la valeur finale puisse être dupliquée sans avoir à la présenter à nouveau dans la requête (et j'espère que cela sera supprimé par l'optimiseur de requête) :

UPDATE `myTable` SET 
   `Field1` = "value",
   `Field2` = "value",
   `Field3` = "value",
--- `Field3` = NEW.`Field3`
WHERE `Field4` = "value";

Hélas, ceci n'est pas supporté dans une UPDATE déclaration, uniquement à l'intérieur d'un corps de déclencheur.

Vous devrez faire la manipulation dans votre C++ avant d'exécuter l'instruction, soit par remplacement de caractère (, pour ) ou la suppression de caractères ; le premier peut produire un code plus complexe que celui que vous avez actuellement, et le second peut être inefficace (selon la structure de votre code de construction de requête), mais c'est toujours votre meilleur pari.