如何检索由 MySQL 事件插入的记录的 id
Posted
技术标签:
【中文标题】如何检索由 MySQL 事件插入的记录的 id【英文标题】:how to retrieve id of record that is inserted by MySQL event 【发布时间】:2015-06-18 18:22:19 【问题描述】:以下是我的代码:
$schedule = $this->db->query("CREATE EVENT ".$data['id']." ON SCHEDULE
EVERY 1 MONTH ON COMPLETION PRESERVE ENABLE DO INSERT INTO oops_invoice
(id, prefix, number, bill, account_id, order_delivery_id, date, staff_id,
customer_note, recurrence, status, itp, utp) VALUES ('', '".$data['prefix']."',
'".$data['number']."', '".$data['bill']."', '".$data['account_id']."', NULL,
'".$data['date']."', NULL, '".$data['customer_note']."', '".$data['recurrence']."',
'Draft', '".$data['itp']."', CURRENT_TIMESTAMP)");
$this->db->query("SET GLOBAL event_scheduler = 'ON'");
我坚持使用 id 来检索 mysql 事件插入的 id od 行。
我已经尝试过,但当表为空时不起作用...
以下代码工作正常,除了表为空的一种情况......当时它什么也不返回,所以我被卡住了......
这一项与我们插入简单数据不同,这一项使用 MySQL 事件插入,所以 $this->db->insert_id();
不起作用......
$last = $this->db->query('SELECT MAX(id) AS `maxid` FROM `oops_invoice`')->row()->maxid;
【问题讨论】:
不要关注不是问题的三元运算符 好吧,描述一下这个问题。 “不起作用”有点不具体。 是mysql还是mysqli??还是pdo??? 如果表为空,为什么需要插入行的ID? @SagarNaliyapara:插入发生在event
正在执行但不是在事件创建时。您还可以为event
包含starts
子句。示例:ON SCHEDULE EVERY 1 MONTH STARTS DATE_FORMAT(NOW(),'%Y-%m-%d %H:55:00')
【参考方案1】:
不需要检索 id, 您可以像这样在创建活动的 1 或 2 分钟之前开始活动... 它将消除表中的 2 次插入。
CREATE EVENT ".$data['id']." ON SCHEDULE EVERY 1 MONTH STARTS DATE_SUB(NOW(),INTERVAL '0:01' HOUR_MINUTE) ON COMPLETION PRESERVE ENABLE DO INSERT INTO oops_invoice (id, prefix, number, bill, account_id, order_delivery_id, date, staff_id, customer_note, recurrence, status, itp, utp) VALUES ('', '".$data['prefix']."', '".$data['number']."', '".$data['bill']."', '".$data['account_id']."', NULL, '".$data['date']."', NULL, '".$data['customer_note']."', '".$data['recurrence']."', 'Draft', '".$data['itp']."', CURRENT_TIMESTAMP)");
$this->db->query("SET GLOBAL event_scheduler = 'ON'");
【讨论】:
【参考方案2】:$this->db->lastInsertId()
一定是你的解决方案
【讨论】:
您不尝试获取数据库中创建事件的最后一个 id 吗?以上是关于如何检索由 MySQL 事件插入的记录的 id的主要内容,如果未能解决你的问题,请参考以下文章
从 user_pseudo_id 检索 firebaseUID
如何使用 ODBC 驱动程序仅从 MS Access 向 MySql 自动插入新记录?