我有一个每天从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 | |
------------------------------------------------
我希望这是有意义的,请help..Thank你这么多:)
发布于 2017-12-06 23:37:43
您可以为其创建触发器
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>
发布于 2017-12-06 23:31:53
我发现了两种方法:
A.对数据库使用2个查询
旧Exp date
中的新值更新Expired date
B.使用单个查询
Exp Date = Expired date,Expired date = API_VALUE
有些实现没有相同的更新顺序:
sql-update-order-of-evaluation
您应该测试它,看看它在您的系统上是如何工作的。如果它工作正常,那么您应该决定是否有任何可移植性问题的风险。
致以亲切的问候,
线路
发布于 2017-12-29 06:07:00
您可以简单地尝试类似下面这样的mysql查询,
UPDATE your_table_name
SET `Old Exp Date` = `Expired Date`,
`Expired Date` = "$api_value";
https://stackoverflow.com/questions/47685070
复制相似问题