语境
我有一个动态生成的 .sql 文件,其中包含一系列插入语句,这些语句将用于将数据插入到许多依赖于其他表的不同表中。
运行每个插入语句后,如果特定表具有自动递增的 id 列,则文本“SET @autoIncrementColumnName = LAST_INSERT_ID();” 生成该插入语句的最后一个插入 id 存储在 mysql 变量中。然后,如果该特定表有另一个 INSERT 语句,则重复该过程。问题是每个语句“SET @autoIncrementColumnName = LAST_INSERT_ID();” 覆盖前一个变量,然后才能在 .sql 文件中使用该变量。
所以稍后在 .sql 脚本中,您会看到如下两行:
INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');
INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');
它需要插入它之前存储的 mysql 值,但所有变量都被覆盖,除了一个。
两个问题
是否可以仅使用 MYSQL 创建变量变量?像这样:
SET @dynamicVarName = CONCAT('guestCreditCardId', LAST_INSERT_ID()); SET @@dynamicVarName = LAST_INSERT_ID();
如果变量变量是不可能的,我可以使用什么解决方案?