我有下面的脚本,通过 cronjob 清理 session 。
我想清理超过 40 分钟不活动的 session 。 但如果他们有一个特定的 user_id,他们应该持续 1 天。
这行不通,我不明白为什么。有时即使他们有 user_id,他们也会被删除。
DELETE FROM session
WHERE
CASE
WHEN
user_id IN (3,4,5,6,7)
THEN
expiry < DATE_SUB(NOW(), INTERVAL 1 DAY)
ELSE
expiry < DATE_SUB(NOW(), INTERVAL 40 MINUTE)
END
user_id
的数据类型为int
,expiry
的数据类型为datetime
。
最佳答案
将比较移到外面而不是在 case 内进行:
DELETE FROM session
WHERE expiry < CASE
WHEN user_id IN (3,4,5,6,7) THEN DATE_SUB(NOW(), INTERVAL 1 DAY)
ELSE DATE_SUB(NOW(), INTERVAL 40 MINUTE)
END
关于php - 数据库条目被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032622/