Привет!
Есть 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 во время этой транзакции, нужно что бы ничего не потерялось
Если нет, то как сделать все правильно?
Спасибо!