Привет!
Есть 2 базы, одна рабочая, другая временная. Время от времени мне нужно переносить данные из временной в рабочую и чистить временную базу.
Для этого я хочу использовать подобный запрос:
START TRANSACTION;
INSERT INTO
chat_lastread(`user_id`, `dialog_id`, `date`)
SELECT
`user_id`, `dialog_id`, `date`
FROM
chat_lastread_temp
ON DUPLICATE KEY UPDATE
chat_lastread.`date` = chat_lastread_temp.`date`;
DELETE FROM chat_lastread_temp;
COMMIT;
Правильно ли я поступаю?
Если между запросами INSERT FROM SELECT и DELETE в chat_lastread_temp будет вставлена строка, то она будет потеряна или транзакция этого не допустит?
Мне нужно удалить из chat_lastread_temp только те строки, которые были перенесены в chat_lastread во время этой транзакции, нужно что бы ничего не потерялось
Если нет, то как сделать все правильно?
Спасибо!