我正在寻求在MySQL中配置一个表,允许我强制执行字段输入顺序。
e.g。设定一个包含以下字段的表
Stage1Timestamp,Stage1AuthorizedBy, Stage2Timestamp,Stage2AuthorizedBy, Stage3Timestamp Stage3AuthorizedBy
其中时间戳是添加AuthorizedBy信息时自动填充的日期时间。 (外国钥匙或代码或其他什么。那细节无关紧要。)
我正在思考的是:
在AuthorizedBy的定义上,如果前一阶段的AuthorizedBy和Timestamp被填充,则将关联的日期时间设置为Now。否则,清空当前值。 如果正在消除Timestamp或AuthorizedBy值,请删除对等体和直接上级。
如果MySQL将链接触发器,这应该可以正常工作。那样有用吗?其他想法?
答案 0 :(得分:1)
如果你使用InnoDB,建立外键约束来为你检查这样的东西。将其拆分为3个表,将第2阶段的键添加到第1阶段,从第3阶段添加到第2阶段,然后使用ON DELETE SET NULL
来实现所需的行为。
答案 1 :(得分:1)
我认为你应该在应用层解决这个问题,但是这里有一个数据库解决方案,不需要触发器 - 只需要外键。所有CreatedAt
字段都不为空,默认为now()
- 在MySQL中称为 TIMESTAMP 。
仅适用于不会随时间变化的流程。