gpt4 book ai didi

mysql - 使用 MySQL 表中的特定新数据安排更新

转载 作者:行者123 更新时间:2023-11-30 21:38:13 25 4
gpt4 key购买 nike

我想知道是否有任何方法可以安排更新,在旧表数据到期时更新表数据。

例如John Smith 在 X 公司有一项现役服务,但他想升级该服务。但是,由于他当前协议(protocol)的限制,新服务要到 X 天后才会生效。

有没有办法在MySQL中存储新数据并在月底更新?如果是,这是否需要我有另一个表来存储新的订单数据?

最佳答案

通常,在您的 services 表中放置 start_dateend_date 列来满足这种在将来更改内容的要求。

然后你可以找到当前活跃的服务行

   SELECT user_id, whatever, whatelse
FROM services
WHERE (start_date IS NULL OR start_date <= NOW())
AND (end_date IS NULL OR end_date > NOW());

如果您愿意,您可以创建一个名为 active_services 的 View ,自动过滤当前事件服务的 services 表。

 CREATE VIEW active_services AS
SELECT *
FROM services
WHERE (start_date IS NULL OR start_date <= NOW())
AND (end_date IS NULL OR end_date > NOW());

注意——在此设计中,end_date 包含不是服务处于事件状态的最后时刻,而是服务变为非事件状态的第一时刻。如果 end_date 为空,则服务继续处于事件状态。

要在下月初更改服务或 user_id,您需要执行以下两个操作:

  UPDATE service
SET end_date = LAST_DAY(NOW()) + INTERVAL 1 DAY
WHERE user_id = <<user id you wish to change >>

INSERT INTO service (start_date, user_id, whatever, whatelse)
VALUES (LAST_DAY(NOW()) + INTERVAL 1 DAY,
<<user id you wish to change >>,
<<whatever>>,
<<whatelse>>;

然后,当下个月到来时,active_services View 返回新服务。这比依赖精确定时的月度工作要稳健得多。如果你做月度工作,它可以随时运行。它只是清理过期的服务。

您可以使用 MySQL 事件在指定时间运行特定作业。 (但是一些共享的 MySQL 系统不允许您使用事件。)

关于mysql - 使用 MySQL 表中的特定新数据安排更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com