MySQL mise à JOUR de l'aide SI la condition

Je ne suis même pas sûr si c'est possible, mais je suis en train de faire différents types de mise à JOUR si une certaine condition est remplie.

utilisateur [id, date_debut(not NULL), end_date(NULL), raison(NULL), .....]

user_roles [id, role_id, user_id, date_debut(not NULL), end_date(NULL)]

Ce que j'ai pour l'instant mais cela ne fonctionne que si l'existence d'un rôle pour l'utilisateur et il est end_date est NULLE:

UPDATE user p 
JOIN user_roles ur ON p.id = ur.user_id 
SET ur.end_date = NOW()
   , p.end_date = NOW()
   , p.reason = "Retired" 
WHERE p.id = 5 
AND ur.end_date IS NULL

Je pensais faire quelque chose comme ceci:

IF EXISTS (SELECT id FROM user_roles 
WHERE user_id = 5 AND end_date IS NULL)
THEN 
    UPDATE user p 
    JOIN user_roles ur ON p.id = ur.user_id 
    SET ur.end_date = NOW()
        , p.end_date = NOW()
        , p.reason = "Retired" 
    WHERE p.id = 5 AND ur.end_date IS NULL 
ELSE 
    UPDATE user 
    SET end_date = NOW()
        , reason = "Retired" 
    WHERE id = 5 
END IF
Je faisais la même chose =)

OriginalL'auteur moleculezz | 2009-12-11