phpmyadmin:数据库事件

Posted

技术标签:

【中文标题】phpmyadmin:数据库事件【英文标题】:phpmyadmin: database events 【发布时间】:2015-12-31 13:28:45 【问题描述】:

当记录的日期(即将到来的)等于今天的日期时,我正在尝试将记录从一个表(即将到来的)移动到另一个表(今天)。我将如何使用 phpmyadmin 中的重复事件来执行此操作?

【问题讨论】:

为什么没有一张表,并进行一些分区? 我更想知道是否可以按照我的要求(我主要是初学者)而不是关心简单性。不过你是对的! 您的建议/计划是一个糟糕的架构。它使事情变得过于复杂而没有提供任何真正的好处。你想重新考虑一下。 回答您的问题:没有此类事件,因此您无法做出任何反应。您必须定期轮询日期比较。 真的是个坏主意:-) 好的,谢谢你的信息! 【参考方案1】:

您当然可以使用在每天午夜(实际上不久之后)运行的 mysql 事件。你可以在那个事件中做任何你想做的事情。这是一个例子。

CREATE EVENT `midnight_event`
    ON SCHEDULE
        EVERY 1 DAY STARTS '2015-10-10 00:00:00'
    ON COMPLETION PRESERVE
    DISABLE ON SLAVE
    DO BEGIN

     START TRANSACTION;

    INSERT 
      INTO todays_table 
    VALUES (col, col, col, col)
    SELECT col, col, col
      FROM pending_table
     WHERE time_stamp >= CURDATE()
       AND time_stamp <  CURDATE() + INTERVAL 1 DAY;

    DELETE 
      FROM pending_table
     WHERE time_stamp >= CURDATE()
       AND time_stamp <  CURDATE() + INTERVAL 1 DAY;

    COMMIT;
END

其他人评论了这种数据设计的智慧,行从一个表移动到另一个表。他们的 cmets 有相当大的优点。如果您想要一个包含今天事件的“表格”,请考虑一个视图。这个看起来就像你在我提到的事件中维护的表。

CREATE OR REPLACE VIEW todays_table AS
SELECT *
  FROM pending_table
 WHERE time_stamp >= CURDATE()
   AND time_stamp <  CURDATE() + INTERVAL 1 DAY

【讨论】:

以上是关于phpmyadmin:数据库事件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Java 程序连接到 phpMyAdmin 数据库?

[phpmyadmin] phpmyadmin select command denied to user

如何从 phpMyAdmin 数据库中查找连接字符串?

Linux CentOS7系统中phpMyAdmin安装配置

phpmyadmin登录后显示“phpMyAdmin 高级功能尚未完全设置,部分功能未激活。查找原因...。”错误提示

PhpMyAdmin 正在将 varbinary 导出为奇怪的字符而不是 HEX