【问题标题】:Add a global rule to modify dates for all database inserts & updates添加全局规则以修改所有数据库插入和更新的日期
【发布时间】:2016-09-20 12:33:57
【问题描述】:

每当将要在任何表中插入或更新指定日期时,我都需要向旧版 MySQL 5.1.73 数据库添加规则。 (每个字段都已经有一个默认日期设置,因此以某种方式使用它不是一个可行的解决方案)。

例如:

    IF NewDate = *TheSpecifiedDate* THEN SET NewDate = *ConstantDate*

对于具有一个或多个 DateTime 字段的所有表,此逻辑都是相同的。

目前我唯一的解决方案是手动为每个表添加触发器。这将是很多工作要做,如果需求发生变化,维护起来也很麻烦。

因此,我想知道,每当在任何 DateTime 字段上尝试插入或更新时,是否可以以某种方式使其成为整个数据库的全球化规则/触发器?

或者有没有更优雅/首选的方式来实现这种甚至可能不涉及使用触发器的全局规则?

【问题讨论】:

  • 外包给机械土耳其人。有人可能会以 12 美分/小时的价格做到这一点:p
  • 感谢@Drew,我认为有人首先采用这种方法来“设计”这个特定的数据库,但可能每小时支付不到 12 美分!
  • 在应用程序级别做这样的事情。数据库中业务逻辑过多是不好的。
  • @fancyPants 我同意,但这不是这种特殊情况的选择。
  • @bandito 那么这是一个可怕的场景

标签: mysql entity-framework datetime triggers database-schema


【解决方案1】:

只是为了关闭它,对于任何试图做类似事情的人......

我的场景中的主要限制是我正在缓慢迁移 200 多个遗留应用程序,因此在转换所有应用程序之前无法操作遗留数据库行为或结构。我还需要复制一些现有的行为,不管我喜欢与否!

当我发布这个问题时,我使用 EF6 作为我的数据访问层。更改为 EF Core 1.1.0 后,我现在可以在表映射中使用“HasDefaultValueSql”设置,通过允许我在数据库更新时设置值来解决我的特定问题。

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 2015-09-05
    • 1970-01-01
    • 2019-09-15
    • 2021-07-12
    • 2015-11-21
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多