Tôi thậm chí không chắc chắn nếu điều này là có thể nhưng tôi đang cố gắng để làm khác nhau CẬP NHẬT nếu một điều kiện nhất định được đáp ứng.CẬP NHẬT MySQL bằng cách sử dụng điều kiện IF
người dùng [id, start_date (NOT NULL), end_date (NULL), lý do (NULL), .....]
user_roles [id, ROLE_ID, user_id, start_date (NOT NULL), end_date (NULL)]
gì ngay bây giờ tôi đã là thế này nhưng điều này chỉ hoạt động nếu một vai trò tồn tại cho người sử dụng và nó end_date là 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
tôi đã nghĩ đến việc làm một cái gì đó như thế này:
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, tôi đang làm điều tương tự =) –