SQL insert into ... select from因触发器更新而无效

时间:2012-12-22 00:41:13

标签: mysql sql

编辑我没有CREATE TEMPORARY TABLE权限。还有另一种方式吗?

MySQL数据库有一个表User,其中包含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不允许的依赖循环,虽然我知道这个触发器的动作与some_condition正交,所以在实践中并不重要。

我知道我可以为单个值编写SELECT @some_var := ...,但我无法使其适用于多个值。局部变量是解决这个问题的正确方法吗?如果是这样,请问是什么语法?如果没有,还有其他一些纯SQL方法吗?

1 个答案:

答案 0 :(得分:0)

我会使用临时表并将它们INSERT INTO ... SELECT FROM分解为以下语句:

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

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

DROP TABLE #tmp