Как обновить новое значение в текущем поле и перенести текущее значение в старое поле?

У меня есть таблица MySQL, которая обновляется из API ежедневно, но теперь я хочу отслеживать конкретное поле, которое было обновлено из 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   |              |
------------------------------------------------

Я надеюсь, что это имеет смысл немного, пожалуйста, помогите .. Большое спасибо 🙂

1

Решение

Вы можете создать триггер для него

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>
2

Другие решения

Я нашел 2 способа сделать это:

А. Использование 2 запросов к базе данных
— обновить Старая дата опыта с Дата истечения срока значение из таблицы
— обновить Дата истечения срока с новым значением из API

Б. Использование одного запроса
— вы можете попытаться установить оба поля одновременно, но вы должны проверить это
— это как SET Старая дата опыта знак равно Дата истечения срока, Дата истечения срока = API_VALUE

Некоторые реализации не имеют одинаковый порядок UPDATE:
SQL-обновление-порядка из-оценки

Вы должны проверить его, чтобы увидеть, как он работает в вашей системе. Если это работает, вы должны решить, есть ли риск переносимости.

С уважением,
Lin

1

Вы можете просто попробовать запрос MySQL, подобный этому,

UPDATE your_table_name
SET `Old Exp Date` = `Expired Date`,
`Expired Date` = "$api_value";
0
По вопросам рекламы [email protected]