1

データベースの 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_from to offer_toを使用してオファー期間を取得します

次のように、offer_to が現在の時刻よりも早い場合は、データテーブルからオファーの詳細を削除する必要があります。

DELETE FROM Offer_detail
WHERE offer_to< NOW()

これを自動的に行う必要があります。これを行う方法は?

4

2 に答える 2

3

MySQL イベント スケジューラ (MySQL 5.1 >)

イベント スケジューラを使用すると、データベースで実行するタスクをスケジュールできます。これは、ホストが許可しないため、Web スペースで 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 ジョブを使用してスケジュールできます。たとえば、24 時間ごとに 1 回、または MySQL スケジューリング ツールを使用して削除スクリプトを実行するように cron を設定します。

有効期限が切れたデータベースからオファーを取得しないようにアプリケーションを作成することをお勧めします。データベースにデータを保持しておくと、後で、オファーの数、このクライアントが受け入れた数、拒否した数などの統計を実行するのに役立ちます。

クエリで、datetime 列 OfferExpiryDate に日付 > now() があるかどうかを自動的にテストできます。これは、まだ有効なオファーのヒットのみを取得します。

于 2013-10-16T09:38:06.303 に答える