首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有INSERTs上的触发器的表not LOCKing to make INSERTS

带有INSERTs上的触发器的表not LOCKing to make INSERTS
EN

Stack Overflow用户
提问于 2020-03-27 20:19:11
回答 2查看 14关注 0票数 0

我正在尝试向表test中插入一些数据。此表上设置了触发器,用于将数据复制到其他数据库。

但是,当我插入数据时,即使我已经锁定了表并拥有锁定它的正确权限,它也会抛出错误ERROR 1100 (HY000) at line 3 in file: 'test_insert.sql': Table 'test' was not locked with LOCK TABLES.。这是test_insert.sql文件

代码语言:javascript
复制
LOCK TABLES `test` WRITE;

INSERT INTO `test` ('a','b')
VALUES
    (1,2),
    .
    .
    .   

UNLOCK TABLES;

有没有其他方法可以锁定设置了触发器的表?

触发器

代码语言:javascript
复制
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});
EN

回答 2

Stack Overflow用户

发布于 2020-03-27 20:35:33

MySQL 8.0 Reference Manual / Stored Objects / Restrictions on Stored Programs

存储例程中不允许使用

SQL语句

存储例程不能包含任意SQL语句。不允许使用以下语句:

  • 锁定语句LOCK TABLES和UNLOCK TABLES。

  • ...
票数 0
EN

Stack Overflow用户

发布于 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...);看起来更合适。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60885861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档