簡體   English   中英

如何在特定日期時間自動將數據插入mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM