首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将新值更新到当前字段,如何将当前值传递到旧字段?

如何将新值更新到当前字段,如何将当前值传递到旧字段?
EN

Stack Overflow用户
提问于 2017-12-06 23:13:44
回答 3查看 89关注 0票数 1

我有一个每天从API更新的MySQL表,但现在我想要跟踪从API更新的特定字段。我想用当前字段(值)更改来更新行,并将旧字段(值)保留在另一个字段中。有人能给我指出正确的方向吗?最好的做法是什么?

表(原件)

代码语言:javascript
运行
AI代码解释
复制
---------------------------------
|ID | Input Date | Expired Date |
---------------------------------
| 2 | 2017-05-17 | 2017-12-19   |   
---------------------------------
| 3 | 2017-07-09 | 2018-05-19   |
---------------------------------

更新时的表格(当前)

代码语言:javascript
运行
AI代码解释
复制
---------------------------------
|ID | Input Date | Expired Date |
---------------------------------
| 2 | 2017-05-17 | 2018-05-28   |  <----- ID 2: Expired Date updated
---------------------------------
| 3 | 2017-07-09 | 2018-05-19   |
---------------------------------

表已更新并保留旧字段值

代码语言:javascript
运行
AI代码解释
复制
------------------------------------------------
|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你这么多:)

EN

回答 3

Stack Overflow用户

发布于 2017-12-06 23:37:43

您可以为其创建触发器

代码语言:javascript
运行
AI代码解释
复制
CREATE TRIGGER date_updated BEFORE UPDATE ON <your table name>
       FOR EACH ROW SET <old exp date column> = OLD.<expired date column>

在PostgreSQL中,您可以使用RETURNING子句

代码语言:javascript
运行
AI代码解释
复制
UPDATE <table name> SET <column> = <value> RETURNING <column>
票数 3
EN

Stack Overflow用户

发布于 2017-12-06 23:31:53

我发现了两种方法:

A.对数据库使用2个查询

  • 使用表中的 Exp date值更新

旧Exp date

  • 使用

中的新值更新Expired date

B.使用单个查询

  • 您可以尝试同时设置这两个字段,但应该对其进行测试,就像set

Exp Date = Expired dateExpired date = API_VALUE

有些实现没有相同的更新顺序:

sql-update-order-of-evaluation

您应该测试它,看看它在您的系统上是如何工作的。如果它工作正常,那么您应该决定是否有任何可移植性问题的风险。

致以亲切的问候,

线路

票数 1
EN

Stack Overflow用户

发布于 2017-12-29 06:07:00

您可以简单地尝试类似下面这样的mysql查询,

代码语言:javascript
运行
AI代码解释
复制
UPDATE your_table_name 
SET `Old Exp Date` = `Expired Date`, 
`Expired Date` = "$api_value";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47685070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档