[英]How to insert data into mysql automatically by certain datetime
我有兩張桌子。 第一個是inventory_control
,第二個是stock
。
表inventory_control
記錄了一個倉庫的stock opname 和每個接收或調度事件,數據總是被更新。
表stock
與會計有關。
每天00:00, inventory_control
表中的所有數據都需要自動插入到stock
表中。
我不知道。 我在谷歌搜索過,但沒有找到有用的東西。 我了解了觸發器,但我認為觸發器沒有幫助。
這些是我的表:
CREATE TABLE 'inventory_control' (
'warehouse', varchar(100) unsigned NOT NULL,
'idItem', int(8) unsigned NOT NULL,
'Quantity' int(8) unsigned);
CREATE TABLE 'stock'(
'warehouse', varchar(100) unsigned NOT NULL,
'idItem', int(8) unsigned NOT NULL,
'Quantity' int(8) unsigned,
'value', int(11) unsigned);
在您的 cpanel 中,您可以通過運行 php 腳本文件來使用 cron 作業
http://awesomescreenshot.com/0613s35q6c
像這樣
php -f /home/your_username/public_html/script.php 並調整那里的時間
CREATE EVENT IF NOT EXISTS `daily_event`
ON SCHEDULE EVERY 00 DAY_HOUR
COMMENT 'Insert data from inventory_control to stock'
DO INSERT INTO inventory_control SELECT * FROM stock;
但是,如果您想每晚運行它,您可能需要編輯它,因為此查詢將每晚將所有stock
表附加到inventory_control
表。 這可能會導致大量重復數據。 更好的查詢(假設您有一個timestamp
字段或每條記錄的類似內容)將是:
CREATE EVENT IF NOT EXISTS `daily_event`
ON SCHEDULE EVERY 1 DAY
STARTS '2014-11-04 00:00:00'
COMMENT 'Insert data from inventory_control to stock'
DO INSERT INTO inventory_control SELECT * FROM stock
WHERE 'timestamp' BETWEEN CURDATE() - 2 AND CURDATE() - 1;
這將在每晚午夜運行查詢,並且只會添加過去 24 小時內創建的記錄。
編輯:除非配置了 MySQL 事件調度程序,否則不會調度事件
EDIT2:請務必查看有關事件調度的文檔,了解您可以執行的操作的完整列表!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.