如何更新当前字段的新值并将当前值传输到旧字段?

时间:2017-12-06 23:13:44

标签: php mysql rets

我有一个每天从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   |              | 
------------------------------------------------

我希望这有点意义,请帮助。非常感谢你。)

3 个答案:

答案 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