【问题标题】:Automation on SQL (MySQL)SQL 自动化 (MySQL)
【发布时间】:2011-12-02 13:00:07
【问题描述】:

我想问一个 SQL 鉴赏家的问题(具体来说是 MySQL)。

我有一个餐桌预订时间表。当客户进行预订时,有时间让客户使用我的服务。因此,他确实不得不离开餐桌预订。

一旦达到使用时间限制,有一些方法(触发, 我相信),它会自动删除这本书在 桌子?

如果是这样,有人可以给我一些关于如何开始搜索它的想法,或者作为一些更高级的代码行也完全欢迎一些帮助。

这也有可能只能通过服务器端(PHP、ASP ...)来实现,但事实并非如此,因为 SQL 是一种非常完整的语言(据我所知)。

Edit1:问题是我认为这是 DBMS 的任务,所以我想把这个责任留给 MySQL 问题是:如何?

【问题讨论】:

  • 您可以使用 cronjob 搜索记录并删除适当的记录,使用您喜欢的任何语言

标签: mysql sql triggers


【解决方案1】:

triggerinsertupdatedelete 事件之前或之后触发(至少在 MySQL 中,根据 docs

您想要的是通过您的应用程序(无论是 php、asp.net 等)或调用某种 SQL 脚本的 cron 作业执行的某种计划作业。

所以要回答,它不能纯粹用触发器来完成。

【讨论】:

    【解决方案2】:

    您可以使用 SQL 作业,但如果删除逻辑过于复杂而无法通过查询进行管理,我建议您使用 PHP 脚本来为您完成所有工作。 只需在 PHP 中写下数据检查/删除逻辑,并为其设置一个简单的 cron 操作即可。

    此解决方案的优点是您可以访问您的脚本/类/数据库提供程序并节省您的时间,并且您可以单独记录所有操作(而不是记录到 MySQL 日志,无论您依赖什么脚本语言)。

    如果您可以完全控制您的服务器,计划的操作将如下所示(如果您想在每天 00:01 检查您的数据库条目):

    cat /etc/cron.d/php5
    0 1 * * * php /path/to/your/script.php >> /path/to/your_script.log
    

    ..否则您将不得不检查您的托管帐户的控制面板并弄清楚如何管理

    【讨论】:

      【解决方案3】:

      您可以在表中再创建一列,用于创建到期日期。然后您可以在您的 sql 服务器上创建一个作业,该作业将删除所有过期日期小于当前日期的记录。

         CREATE EVENT db_name 
         ON SCHEDULE EVERY 10 SECOND
         DO
         DELETE FROM myschema.mytable WHERE expiration_date < NOW() 
      

      我希望这会有所帮助。

      【讨论】:

      • 那个,我知道。问题是我认为这是 DBMS 的任务,所以我想把这个责任留给 MySQL 问题是:如何?
      • 您可以尝试使用以下代码: CREATE EVENT db_name ON SCHEDULE EVERY 10 SECOND DO DELETE FROM myschema.mytable WHERE expiration_date
      猜你喜欢
      • 2018-10-14
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多