首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只尝试在mysql中创建变量。(不使用PHP)

问只尝试在mysql中创建变量。(不使用PHP)
EN

Stack Overflow用户
提问于 2013-01-23 17:56:02
回答 1查看 186关注 0票数 0

上下文

我有一个动态生成的.sql文件,其中包含一系列insert语句,这些语句将用于将数据插入到许多依赖于其他表的不同表中。

运行每个insert语句后,如果特定表有一个自动递增的id列,则生成文本"SET @autoIncrementColumnName = LAST_INSERT_ID();“,该文本将该insert语句的最后一个insert id存储在mysql变量中。然后,如果对该特定表有另一个INSERT语句,则会重复该过程。问题是,每个语句"SET @autoIncrementColumnName =LAST_INSERT_ID()“在以后能够在.sql文件中使用变量之前覆盖前一个变量。

接下来,在.sql脚本中,您可以看到两行代码,如下所示:

代码语言:javascript
复制
INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');

INSERT INTO relatedTable (col1,col2,specialColumn,col3,col4) VALUES ('','',@autoIncrementColumnName,'','');

它需要插入先前存储的mysql值,但是除了一个变量之外,所有变量都被覆盖。

两个问题

  1. 是否可以仅使用MYSQL创建变量?如下所示: SET @dynamicVarName = CONCAT('guestCreditCardId',LAST_INSERT_ID();SET @@dynamicVarName =LAST_INSERT_ID();

  1. 如果变量是不可能的,我可以使用什么解决方案?
EN

回答 1

Stack Overflow用户

发布于 2013-02-04 21:41:59

在深入研究手头的问题时,我发现可以通过创建多个函数/方法来避免头疼,每个函数/方法负责sql生成的特定部分。这样以后,如果需要创建另一个动态sql语句,只需从需要的地方调用另一个函数/方法,就可以将其放置在需要的位置。

例如

如果有5个表正在生成"INSERT INSERT“sql语句,而其中3个表的记录未用于创建其他动态sql语句,则可以使用一个函数/方法处理所有不需要其他表数据的表。

对于任何特殊情况

然后为特殊情况创建单独的函数/方法。

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

https://stackoverflow.com/questions/14486217

复制
相关文章

相似问题

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