У меня есть таблица 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 | |
------------------------------------------------
Я надеюсь, что это имеет смысл немного, пожалуйста, помогите .. Большое спасибо 🙂
Вы можете создать триггер для него
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 запросов к базе данных
— обновить Старая дата опыта с Дата истечения срока значение из таблицы
— обновить Дата истечения срока с новым значением из API
Б. Использование одного запроса
— вы можете попытаться установить оба поля одновременно, но вы должны проверить это
— это как SET Старая дата опыта знак равно Дата истечения срока, Дата истечения срока = API_VALUE
Некоторые реализации не имеют одинаковый порядок UPDATE:
SQL-обновление-порядка из-оценки
Вы должны проверить его, чтобы увидеть, как он работает в вашей системе. Если это работает, вы должны решить, есть ли риск переносимости.
С уважением,
Lin
Вы можете просто попробовать запрос MySQL, подобный этому,
UPDATE your_table_name
SET `Old Exp Date` = `Expired Date`,
`Expired Date` = "$api_value";