我有一个每天从API更新的MySQL表,但现在我想跟踪从API更新的特定字段。我想用当前字段(值)更改更新行,并将旧字段(值)保留在另一个字段中。 有人可以指出我正确的方向,这将是最好的做法吗?
表(原创)
---------------------------------
|ID | Input Date | Expired Date |
---------------------------------
| 2 | 2017-05-17 | 2017-12-19 |
---------------------------------
| 3 | 2017-07-09 | 2018-05-19 |
---------------------------------
更新后的表格(当前)
---------------------------------
|ID | Input Date | Expired Date |
---------------------------------
| 2 | 2017-05-17 | 2018-05-28 | <----- ID 2: Expired Date updated
---------------------------------
| 3 | 2017-07-09 | 2018-05-19 |
---------------------------------
表已更新并保留旧字段值
------------------------------------------------
|ID | Input Date | Expired Date | Old Exp Date |
------------------------------------------------
| 2 | 2017-05-17 | 2018-05-28 | 2017-12-19 |
------------------------------------------------
| 3 | 2017-07-09 | 2018-05-19 | |
------------------------------------------------
我希望这有点意义,请帮助。非常感谢你。)
答案 0 :(得分:3)
你可以为它创建一个触发器
CREATE TRIGGER date_updated BEFORE UPDATE ON <your table name>
FOR EACH ROW SET <old exp date column> = OLD.<expired date column>
在PostgreSQL中,您可以使用RETURNING子句
UPDATE <table name> SET <column> = <value> RETURNING <column>
答案 1 :(得分:1)
我找到了两种方法:
一个。对数据库使用2个查询
- 使用表格中的过期日期值更新旧过期日期
- 使用API中的新值
B中。使用单个查询
- 你可以尝试一次设置两个字段,但你应该测试它
- 就像SET 旧的Exp日期 = 过期日期,过期日期 = API_VALUE
某些实施没有相同的UPDATE顺序:
sql-update-order-of-evaluation
您应该对其进行测试,以了解它在您的系统上的工作原理。如果它有效,那么您应该决定是否存在可移植性问题的风险。
亲切的问候,
林
答案 2 :(得分:0)
你可以简单地尝试类似这样的mysql查询,
FirestoreRecycleroptions