Incrémenter un champ de base de données par 1
Avec MySQL, si j'ai un champ, de dire les connexions, comment pourrais-je aller sur la mise à jour de ce champ par 1 dans une commande sql?
Je suis en train de créer une requête d'INSERTION, qui crée firstName, lastName et les connexions. Toutefois, si la combinaison de prénom et de nom existe déjà, incrémenter les connexions par 1.
de sorte que le tableau pourrait ressembler à ceci..
firstName----|----lastName---- | ----logins
John Jones 1
Steve Smith 3
Je suis après une commande lors de l'exécution, soit de l'insertion d'une nouvelle personne (c'est à dire Tom Rogers) ou de l'incrément de connexions si John Jones était le nom utilisé..
Vous devez vous connecter pour publier un commentaire.
Mise à jour d'une entrée:
Une simple incrémentation devrait faire l'affaire.
Insérer une nouvelle ligne ou de la mise à Jour si elle existe déjà:
Si vous souhaitez mettre à jour une rangée déjà, ou insérez-le si il n'existe pas déjà, vous pouvez utiliser le
REMPLACER
syntaxe ou laINSÉRER...SUR un DOUBLE de la CLÉ de mise à JOUR
option (Comme Rob Van Dam démontré dans sa réponse).L'insertion d'une nouvelle entrée:
Ou peut-être vous êtes à la recherche de quelque chose comme
INSÉRER...MAX(connexions)+1
? Essentiellement, vous feriez exécuter une requête un peu comme la suite - peut-être un peu plus complexe, selon vos besoins spécifiques:INSERT
, pas unUPDATE
. Si vous souhaitez faire une insertion, vous aurez besoin d'obtenir le max et ajouter 1 à elle.ON DUPLICATE KEY UPDATE
n'est pas complètement la réplication sûr!Si vous pouvez faire en toute sécurité (firstName, lastName) la CLÉ PRIMAIRE ou au moins mettre une clé UNIQUE sur eux, alors vous pourriez faire ceci:
Si vous ne pouvez pas faire cela, alors que vous auriez à chercher tout ce que la clé primaire est le premier, donc je ne pense pas que vous pourriez obtenir ce que vous voulez dans une requête.
ON DUPLICATE KEY UPDATE
n'est pas complètement la réplication sûr!Vous n'avez pas dit ce que vous voulez faire, mais vous avez fait allusion à elle assez bien dans les commentaires de l'autre réponse. Je pense que vous êtes probablement à la recherche d'un incrément automatique de la colonne
alors aucun code spécial n'est nécessaire lors de l'insertion. Juste
L'API MySQL a des fonctions pour vous dire ce nom d'utilisateur a été créé lors de l'exécution de cette instruction dans le code client.
J'ai pas expert dans MySQL, mais vous devriez probablement regarder sur les déclencheurs par exemple, AVANT de l'INSÉRER.
Dans le déclencheur, vous pouvez exécuter la requête select sur votre table d'origine et si elle a trouvé quelque chose de simplement mettre à jour la ligne 'connexions' au lieu d'insérer de nouvelles valeurs.
Mais tout cela dépend de la version de MySQL que vous en cours d'exécution.
Ce n'est plus une référence à un certain nombre de réponses ci-dessus qui suggèrent l'utilisation de
ON DUPLICATE KEY UPDATE
, MÉFIEZ-vous que c'est PAS toujours réplication coffre-fort, donc si jamais vous prévoyez sur la croissance au-delà d'un seul serveur, vous aurez envie d'éviter cela et d'utiliser deux requêtes, l'une pour vérifier l'existence, puis un deuxième à soitUPDATE
quand une ligne existe, ouINSERT
quand il ne le fait pas.