基本上我正在更新我的orders
表并在日期早于x金额时修改状态。我想要做的是获取受影响的行并在我的events
表中插入一行来记录事件,我的事件表通过order_id
字段识别其订单,该字段应与{{order_id
字段相同1 {}在orders
表中。
所以到了一些代码。
UPDATE `orders` SET `status`='7' WHERE `date` < (UNIX_TIMESTAMP(NOW()) - 172800) AND `status` = '2';
此查询更新的行必须通过一些循环,以便为每个受影响的行将一行插入到我的events
表中。一些我必须在此查询中使用order_id
的方法:
INSERT INTO `orders_events` (`order_id`, `event_id`, `user`, `date`) VALUES (12345678, 6, "Admin", UNIX_TIMESTAMP(now()))
我想要先将select
个订单insert
和temporary table
分别编入modify
和select
,然后insert
再次获取该行来自event
中行的ID和temporary table
insert
数据。但是我在这里遇到了一个问题,因为我不知道如何在mysql中为每个循环提供行和{{1}}到事件中。
在存储过程/ mysql预定事件中执行此操作的正确和最有效的方法是什么?
此外,我想补充一点,因为每隔分钟由多个用户更新,因此锁定表格是不行的。
答案 0 :(得分:0)
您可以使用它来获取您要查找的信息
$affected = mysql_info();
//this will let you see what is returned
echo '<pre>'; print_r($affected); die();
http://php.net/manual/en/function.mysql-info.php
但是,您会注意到它已被弃用。如果您还没有使用PDO或Mysqli,那么您应该考虑这样做。以下是上述http://php.net/manual/en/mysqli.info.php
的Mysqli等价物答案 1 :(得分:0)
解决了!
INSERT INTO `orders_events` (`order_id`, `event_id`, `user`, `date`)
SELECT id, 6, 'Admin', UNIX_TIMESTAMP(NOW()) FROM `orders` WHERE `date` < (UNIX_TIMESTAMP(NOW()) - 172800) AND `status` = '2';
UPDATE `orders` SET `status`='7' WHERE `date` < (UNIX_TIMESTAMP(NOW()) - 172800) AND `status` = '2';