0

我有一个用 ColdFusion 9 编码的 CMS,它具有基本的登录功能,可以与我正在使用的套接字服务器一起使用。最近我设置了一个带付款的“VIP”订阅,但后来我意识到,2 个月过去了,我没有 SQL 来删除订阅。这是我的基本要求;date_purchased如果时间戳值为2 个月,我需要一些 SQL 来自动执行。它需要删除vip_purchases会话用户(仅限用户)的行,并将列更新vip0in users

我只需要为会话用户名执行此操作,并且仅当时间戳为 2 周时,并且仅当 VIP 中的值为1. 我的思路是:

update users set vip = 0 where username = session.username if vip = 1 if date_purchased = 2 months old

我意识到这不是 SQL,那只是为了让它更清楚一点。

4

2 回答 2

1

关闭。:)

UPDATE users
SET vip = 0
WHERE username = sessionname 
AND vip = 1 
AND date_purchased <= (today - number of days wanted)

您需要用您想要的任何时间范围条件替换WHERE(部分)的最后一部分;today -您的帖子令人困惑,因为它提到2 weeks old并且2 months old在相同的上下文中。

于 2012-05-07T20:44:43.637 回答
1

如果您计划通过 Coldfusion(而不是 MySQL 数据库内部)运行此重复执行的任务,则应通过 Coldfusion 管理员设置计划任务。该任务可以每天启动一次脚本来清理所有旧帐户。

确定后,您可以创建包含任务的 .cfm 或 .cfc 文件。

这可以是一个包含 cfquery 或 cfstoredproc 的简单文件,具体取决于您希望逻辑运行的位置。cfquery 将在 Coldfusion 中的 Web 服务器上运行逻辑,cfstoredproc 将要求数据库服务器在数据库服务器上运行 MySQL 逻辑。最好将其作为存储过程运行。

在这种情况下,您甚至不需要检查用户名。只需 SELECT 然后循环并更新 vip = 1 且 date_purchased 已过期的所有用户。

于 2012-05-08T15:25:04.457 回答