我正在尝试向表test中插入一些数据。此表上设置了触发器,用于将数据复制到其他数据库。
但是,当我插入数据时,即使我已经锁定了表并拥有锁定它的正确权限,它也会抛出错误ERROR 1100 (HY000) at line 3 in file: 'test_insert.sql': Table 'test' was not locked with LOCK TABLES.。这是test_insert.sql文件
LOCK TABLES `test` WRITE;
INSERT INTO `test` ('a','b')
VALUES
(1,2),
.
.
.
UNLOCK TABLES;有没有其他方法可以锁定设置了触发器的表?
触发器
CREATE TRIGGER test_insert AFTER INSERT ON #{db_name}.test FOR EACH ROW
INSERT INTO #{other_db}.test (select * from #{db_name}.test where #{primary_index} = NEW.#{primary_index});发布于 2020-03-27 20:35:33
MySQL 8.0 Reference Manual / Stored Objects / Restrictions on Stored Programs
存储例程中不允许使用
SQL语句
存储例程不能包含任意SQL语句。不允许使用以下语句:
发布于 2020-03-27 20:51:00
此语句select * from #{db_name}.test where #{primary_index} = NEW.#{primary_index}
没有多大意义-当您已经在处理插入的每一行时,为什么还要这样做呢
INSERT INTO #{other_db}.test values (new.col1,new.col2...);看起来更合适。
https://stackoverflow.com/questions/60885861
复制相似问题