使用日期MySQL触发器自动删除数据

时间:2013-10-16 09:30:55

标签: php mysql sql database triggers

我需要为我的一个数据库使用trigger,这是我的商品数据表

CREATE TABLE IF NOT EXISTS `offer_detail` (
  `id` int(60) NOT NULL AUTO_INCREMENT,
  `company_id` int(60) NOT NULL,
  `offertype_id` int(60) NOT NULL,
  `category_id` int(60) NOT NULL,
  `place_id` int(100) NOT NULL,
  `offer_title` varchar(150) NOT NULL,
  `offer_description` text NOT NULL,
  `image` varchar(150) NOT NULL,
  `coupon_id` varchar(60) NOT NULL,
  `price` text NOT NULL,
  `unit_id` varchar(60) NOT NULL,
  `price_now` varchar(60) NOT NULL,
  `offer_from` varchar(80) NOT NULL,
  `offer_to` varchar(80) NOT NULL,
  `user_id` int(10) NOT NULL,
  `created` varchar(11) NOT NULL,
  `modified` varchar(10) NOT NULL,
  `Active` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
);

我使用 offer_from offer_to

获得优惠期限

如果offer_to早于当前时间,我需要从datatable删除商品详细信息,如下所示:

DELETE FROM Offer_detail
WHERE offer_to< NOW()

我需要自动执行此操作,如何执行此操作?

2 个答案:

答案 0 :(得分:3)

MySQL事件调度程序(MySQL 5.1&gt;)

使用事件计划程序,您可以计划要在数据库上执行的任务。这对于无法在其网站空间上创建cron作业的Web开发人员来说非常有用,因为他们的主机不会让他们这么做!它确实是cron的绝佳替代品!

示例:

CREATE EVENT PurgeOfferDetailTable
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
DELETE FROM Offer_detail
WHERE offer_to< NOW()
END

答案 1 :(得分:0)

您可以使用CRON作业安排此操作;例如你设置一个cron来每24小时运行一次删除脚本,或者通过MySQL调度工具。

最好是以一种永远不会从数据库中获得已过期的商品的方式编写应用程序。将数据保存在数据库中将有助于您以后运行统计数据,例如我们提供了多少优惠,此客户接受的数量以及拒绝etcetc的数量。

您可以在查询中自动测试datetime colum OfferExpiryDate是否具有日期&gt;现在()。这只会让你获得仍然有价值的优惠。