# 1314 - Блокировка не разрешена в хранимых процедурах

0

У меня есть таблица TB_EVENT_LOG, которая находится в процессе производства, мне нужно перенести данные prod в фиктивную таблицу на том же сервере и усечь производственную таблицу. В то же время я хочу заблокировать производственную таблицу. Я новичок в db, может ли кто-нибудь предложить эффективный способ сделать то же самое.

CREATE event transfer_data
ON SCHEDULE EVERY 12 hour
STARTS  CURRENT TIME_STAMP
DO
BEGIN

LOCK TABLE TB_EVENT_LOG WRITE;
INSERT INTO TB_EVENT_LOG_dummy SELECT * FROM TB_EVENT_LOG ;
UNLOCK TABLES;
TRUNCATE TABLE TB_EVENT_LOG;


END |
DELIMITER ;
  • 0
    Какие операционные системы? Настольные двигатели? И есть ли какие-либо языки программирования, такие как PHP, Perl или Python?
  • 0
    я думаю, что вы имеете в виду Ubuntu .. тогда должно быть возможно сделать cronjob ( google.com/search?q=cronjob+every+12+hour ) и выполнять запросы mysql с программой mysql из терминала .. что-то вроде mysql -u user -p password < script.sql place LOCK TABLE TB_EVENT_LOG WRITE; INSERT INTO TB_EVENT_LOG_dummy SELECT * FROM TB_EVENT_LOG ; UNLOCK TABLES; TRUNCATE TABLE TB_EVENT_LOG; в файле .sql
Показать ещё 1 комментарий
Теги:

1 ответ

0

Чтобы исключить только скопированные записи из производственной таблицы, вместо блокировки таблиц можно использовать транзакции.

Например

START TRANSACTION;
INSERT INTO TB_EVENT_LOG_dummy SELECT * FROM TB_EVENT_LOG ;
TRUNCATE TABLE TB_EVENT_LOG;
COMMIT;
  • 0
    при копировании, если на производстве произошла какая-либо транзакция (значит, вставка / обновление), это вызывает какие-либо проблемы?
  • 0
    Кстати, START TRANSACTION READ ONLY должно работать так же, как оператор LOCK TABLE . «Режим доступа к транзакции может быть указан с помощью SET TRANSACTION. .... Если режим доступа к транзакции установлен на READ ONLY, изменения в таблицах запрещены. Это может позволить механизмам хранения повысить производительность, которые возможны, когда запись не разрешена. . "source dev.mysql.com/doc/refman/8.0/en/set-transaction.html @Manikanta
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню