1

我需要为我的一个数据库使用触发器,这是我的报价数据表

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_fromoffer_to获得优惠持续时间

如果 offer_to 早于当前时间,我需要从数据表中删除优惠详情,如下所示:

DELETE FROM Offer_detail
WHERE offer_to< NOW()

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

4

2 回答 2

3

MySQL 事件调度程序 (MySQL 5.1 >)

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

例子:

CREATE EVENT PurgeOfferDetailTable
ON SCHEDULE EVERY 1 DAY
DO
BEGIN
DELETE FROM Offer_detail
WHERE offer_to< NOW()
END
于 2013-10-16T09:37:48.340 回答
0

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

最好以永远不会从数据库中获得已过期报价的方式编写您的应用程序。将数据保存在您的数据库中将有助于您稍后运行统计数据,例如我们提供了多少报价,该客户接受了多少以及拒绝了多少等。

您可以在查询中自动测试日期时间列 OfferExpiryDate 是否具有日期 > now()。这只会让您获得仍然有效的报价。

于 2013-10-16T09:38:06.303 回答