Mysql SQL插入到。。。由于触发器更新,从中选择不起作用

Mysql SQL插入到。。。由于触发器更新,从中选择不起作用,mysql,sql,Mysql,Sql,编辑我没有创建临时表的权限。还有别的办法吗 MySQL数据库有一个包含id列的表用户 另一个表是UserThing,它有一个user列,该列是user.id的外键 我试图在UserThing中为User中的某些行插入一行,如下所示 INSERT INTO `UserThing` (`user`, `foo`, `bar`) SELECT `id`, 123, 456 FROM `User` WHERE some_condition; 我很确定这没问题,除了UserThing上有一个触发器,它可

编辑我没有创建临时表的权限。还有别的办法吗

MySQL数据库有一个包含id列的表用户

另一个表是UserThing,它有一个user列,该列是user.id的外键

我试图在UserThing中为User中的某些行插入一行,如下所示

INSERT INTO `UserThing` (`user`, `foo`, `bar`)
SELECT `id`, 123, 456 FROM `User` WHERE some_condition;
我很确定这没问题,除了UserThing上有一个触发器,它可能会更新User中的一列。这创建了一个MySql不允许的依赖循环,尽管我知道这个触发器的动作与某些条件正交,所以在实践中并不重要


我知道我可以写SELECT@some\u var:=。。。对于单个值,但我无法使其适用于多个值。局部变量是解决这个问题的正确方法吗?如果是,请问语法是什么?如果没有,是否有其他纯SQL方法可以做到这一点?

我会使用一个临时表并将它们插入到。。。从以下语句中选择:

SELECT `id`, 123, 456 INTO #tmp FROM `User` WHERE some_condition;

INSERT INTO `UserThing` (`user`, `foo`, `bar`)
SELECT * FROM #tmp

DROP TABLE #tmp

你试过你的语法了吗?我的理解是先执行select,然后执行更新,这意味着触发器不会干扰数据。是的:1442-无法更新存储函数/触发器中的表“User”,因为调用此存储函数/触发器的语句已经使用了它。@spraff-检查此项-hy000-TANT-update-table-t1-in-stored-functiontrigger-because-it-ready-use-by-statement-which-invoked-this-stored-functiontrigger/I无法在此服务器上创建临时表。此外,哈希语法有什么问题?不在啊!!似乎引用临时表的语法是特定于SQL Server的。MySQL中创建临时表的语法与CREATETABLE类似,只是说创建临时表。