上下文
我有一个动态生成的.sql文件,其中包含一系列insert语句,这些语句将用于将数据插入到许多依赖于其他表的不同表中。
运行每个insert语句后,如果特定表有一个自动递增的id列,则生成文本"SET @autoIncrementColumnName = LAST_INSERT_ID();“,该文本将该insert语句的最后一个insert 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值,但是除了一个变量之外,所有变量都被覆盖。
两个问题
发布于 2013-02-04 21:41:59
在深入研究手头的问题时,我发现可以通过创建多个函数/方法来避免头疼,每个函数/方法负责sql生成的特定部分。这样以后,如果需要创建另一个动态sql语句,只需从需要的地方调用另一个函数/方法,就可以将其放置在需要的位置。
例如
如果有5个表正在生成"INSERT INSERT“sql语句,而其中3个表的记录未用于创建其他动态sql语句,则可以使用一个函数/方法处理所有不需要其他表数据的表。
对于任何特殊情况
然后为特殊情况创建单独的函数/方法。
https://stackoverflow.com/questions/14486217
复制相似问题