Nie jestem nawet pewien, czy jest to możliwe, ale próbuję wykonać inną aktualizację, jeśli spełniony jest określony warunek.Aktualizacja MySQL przy użyciu warunku IF
użytkownika [id, data_początkowa (nie NULL) end_date (NULL) przyczynę (NULL) .....]
user_roles [id, ROLE_ID, id_użytkownika, data_początkowa (nie NULL) end_date (NULL)]
Co mam teraz jest to, ale to działa tylko jeśli istnieje rola dla użytkownika i to end_date jest NULL:
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
Myślałam o zrobienie czegoś takiego:
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
@APC, robiłem to samo =) –