#1314-存储过程中不允许使用LOCK

时间:2018-07-02 13:42:29

标签: mysql

我有正在生产的TB_EVENT_LOG表,我需要将该产品数据传输到同一服务器上的虚拟表中并截断生产表。与此同时,我想锁定生产表。 我是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 ;

1 个答案:

答案 0 :(得分:0)

为确保仅从生产表中删除复制的记录,可以使用事务代替表锁定。

例如

START TRANSACTION;
INSERT INTO TB_EVENT_LOG_dummy SELECT * FROM TB_EVENT_LOG ;
TRUNCATE TABLE TB_EVENT_LOG;
COMMIT;