2011-12-12 5 views
0

Est-il possible d'avoir une option ou lorsque plusieurs clés uniques?Mysql Multiple Unique Keys

Par exemple, que dois-je vérifier sur cette touche ou sur cette touche et si l'un expulse une erreur en double, alors mettre à jour sur cette touche?

J'ai 2 clés uniques: UPN et (nom d'utilisateur, école)

Nous utilisons sur le compte de la mise à jour en double sur MYSQL. si UPN est passé, mettez à jour la clé upn si elle est en double ou insérez une nouvelle ligne. je veux vérifier sur UPN et (nom d'utilisateur, l'école) et procédez comme suit:

Si UPN mise à jour du match sur ce Si (nom d'utilisateur, école) mise à jour du match sur ce si UPN dosnt match, mais (nom d'utilisateur, l'école) faire la mise à jour sur (nom d'utilisateur, école) match Si UPN match et (nom d'utilisateur, école) DOS mise à jour sur UPN match

Donc, je ai besoin d'utiliser ou à la place de et, est-ce possible?

Ash

Répondre

1

Vous pouvez émuler cela avec les opérateurs conditionnels dans la clause ON DUPLICATE de la requête:

INSERT INTO thetable (id, username, school, othervalue) 
VALUES (10, 'newtover', 'cool school', 'a comment') 
ON DUPLICATE KEY UPDATE 
    username = IF(id = VALUES(id), VALUES(username), username), 
    school = IF(id = VALUES(id), VALUES(school), school), 
    id = IF(id = VALUES(id), id, VALUES(id)); 

L'ordre des mises à jour dans ce cas est important.