我尝试了以下示例。但它没有插入。是where子句中的任何问题
CREATE DEFINER = `root`@`localhost` TRIGGER `new` AFTER INSERT ON `employee`
FOR EACH
ROW INSERT INTO employee_log( first_name, last_name )
SELECT first_name, last_name
FROM employee
WHERE start_date = now( )
答案 0 :(得分:1)
我不确定是否可以使用触发器完成。但是你可以创建一个shell脚本,并执行mysql命令
test.sh:
#!/bin/bash
#delete everything from today_plan
mysql -e "DELETE FROM today_plan" --user=user_name --password=your_password db_name
#insert only todays plans to today_plan
mysql -e "INSERT INTO today_plan (pjtno, pattern, itemno, belt, kiln, qty, lnusr, distant, remark, decww, plandate, nowdate, shipment) SELECT pjtno, pattern, itemno, belt, kiln, qty, lnusr, distant, remark, decww, plandate, nowdate, shipment FROM daily_plan WHERE plandate=NOW()" --user=user_name --password=your_password db_name
exit
然后在/etc/crontab
中将shell脚本的执行添加为cron作业,如:
0 6 * * * root php /path/to/script/./test.sh
每天早上6点执行它
PS。这只是如何完成它的一个想法:D
修改强> 或者你可以mysql event
答案 1 :(得分:1)
“触发器是与表关联的命名数据库对象,并且在表格发生特定事件时激活”
http://dev.mysql.com/doc/refman/5.0/en/triggers.html
创建存储过程
CREATE PROCEDURE yourdatabase.sp_plandate_process ()
BEGIN
// here you write the code to process the data
END
创建活动
CREATE EVENT mysql.name_of_event
ON SCHEDULE
EVERY 24 HOUR STARTS '2013-07-10 06:00:00'
COMMENT 'Write comment'
DO
CALL sp_plandate_process();
确保变量event_scheduler = 1,如果设置为0,则可以执行
SET event_scheduler=1;
这将启动事件调度程序的连接。
由于您更改了我再次编辑的问题
新答案:
可能是因为Now()应该是now()与它的值不同 是什么时候插入。员工hsa后触发器运行一次 插入。现在的值(0可能改变毫秒,但它 不会是一样的。除非你在where子句中使用sort desc,否则你 可以使用值new.id()代替。你真的读过了吗? 建议触发? - 凯尼尔森41秒前