Alors, voici le problème (il est probablement un facile un: P)tables Combinationally MySQL uniques
Ceci est ma structure de la table:
CREATE TABLE `users_awards` (
`user_id` int(11) NOT NULL,
`award_id` int(11) NOT NULL,
`duplicate` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `award_id` (`award_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Il est donc pour un système de prix utilisateur. Je ne veux pas que mes utilisateurs obtiennent le même prix plusieurs fois, c'est pourquoi j'ai un champ "duplicata".
La requête que je suis en train est ce (avec des données d'échantillons de 3 et 2):
INSERT INTO users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1
Donc, mon MySQL est un peu rouillé, mais je mis user_id
être une clé primaire et award_id
à être une clé UNIQUE. Ce (genre de) a créé l'effet désiré.
Lorsque l'utilisateur 1 a reçu le prix 2, il est entré. Si il/elle a obtenu deux fois, une seule rangée serait dans la table, et le doublon serait mis à 1. Et encore, 2, etc.
Lorsque l'utilisateur 2 a reçu le prix 1, il est entré. Si il/elle l'a obtenu deux fois, dupliqué mis à jour, etc.
Mais lorsque l'utilisateur 1 reçoit le prix 1 (après que l'utilisateur 2 lui a déjà été attribué), le champ dupliqué de l'utilisateur 2 (avec le prix 1) augmente et rien n'est ajouté à l'utilisateur 1.
Désolé si c'est un peu nbishbish. Vraiment apprécier l'aide!
Jack
Merci! Je ne savais pas qu'une contrainte unique pouvait être sur plusieurs colonnes ... Je suppose que c'est très important! : D J'ai ajouté ceci et tout fonctionne comme prévu maintenant. À votre santé! – Jack