У меня есть таблица, в которую постоянно отправляются UPDATES / INSERTS из других процессов, и я пытаюсь выполнить транзакцию в моей таблице SQL, где я вращаю таблицу и перемещаю некоторые из последних значений в новую таблицу, которую ятолько что созданный:
BEGIN TRANSACTION;
CREATE TABLE temp LIKE sales;
RENAME TABLE sales TO sales_05_04_19, temp TO sales
INSERT INTO sales SELECT * FROM sales_05_04_19 WHERE time > 1556953200000;
COMMIT;
Но, похоже, он не блокирует эти ОБНОВЛЕНИЯ / ВСТАВКИ, и некоторые, кажется, фактически пробиваются во вновь созданную таблицу продаж до того, как произойдет ВСТАВКА транзакции.Это приводит к тому, что я получаю сообщение об ошибке при вставке транзакции:
(1062, "Duplicate entry '1' for key 'PRIMARY'")
Я думал, что эта транзакция будет блокировать UPDATES / INSERTS до момента ее фиксации, но здесь это не так.Поэтому я чувствую, что мне нужно было бы приобрести замок.Как бы я поступил так (если это правильный подход к исправлению)?