mysql - MySQL 或其他数据库中是否有 cron 的内置替代方案?

标签 mysql database database-design

我要问的是非常基本的。

想象一下用户表中的日期列。

Username --- RegistrationDate ----- Authority
user1     -  (today's date)     -   1
user2     -  (yesterday's date) -   1

每个用户必须在 10 天后自动升级到Authority = 2

我知道我可以通过使用 CRON 不断执行 PHP 来做到这一点,但是数据库的内置功能呢?

类似于:

//pseudo code
bind trigger on users.RegistrationDate, function() {
       if(RegistrationDate >= RegistrationDate+10 days)
           return updateAuthority(1)
}

其中一个重要的事情是性能。它不应该检查循环中的每个触发器,无论应该触发什么,都应该通过将它们直接绑定(bind)到列上来按时触发。

第二件重要的事情是,当我备份数据库时应该将其导出。我不想重新创建它们。

我不是数据库方面的专家,但我在这个项目中使用 MySQL,并且需要 MySQL 的类似功能。如果它不存在并且我必须继续使用 cron,您能否告诉我 Oracle/MSSQL 或 PostgreSQL 中是否存在类似的功能,以便我可以移植我的数据库? (哦,还有 MongoDB,它也可能是一种替代方案。)

谢谢。

最佳答案

在 MySQL 中你有事件: http://dev.mysql.com/doc/refman/5.5/en/create-event.html

只需创建一个每天触发并更新权限的事件。

编辑:(回答下面的问题)

我确信向导会导出事件,但如果没有,您可以使用 mysqldump 程序(它位于 bin 目录中)。您还可以使用 SHOW CREATE EVENT 命令导出单个事件:它返回重新创建事件所需的 SQL 命令。

关于mysql - MySQL 或其他数据库中是否有 cron 的内置替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196274/

相关文章:

database - 是否存在可用于所有 JSON 解析器和数据库的安全 JSON 子集

php - 使用php从数据库返回结果不起作用

mysql - 需要帮助安装 mysql 服务器 v5.6

mysql - 检查连接查询中 2 列中的 2 个值

sql - oracle中的pctincrease是什么?创建表空间时如何分配、调整大小和自动扩展内存

sql - 在具有现有一对多关系的表之间创建一对一关系

MySQL - 何时建立一对一关系

mysql - Doctrine2/Symfony2 - 每个包使用不同的数据库

java - AliasToEntityMapResultTransformer.INSTANCE 不与 join 一起使用

java - Hibernate 缓存和数据库一致性