Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MySQL中的增量变量名

MySQL中的增量变量名
EN

Stack Overflow用户
提问于 2018-03-27 13:01:54
回答 2查看 309关注 0票数 0

我想在MySQL查询中增加变量名。如下所示:

代码语言:javascript
运行
AI代码解释
复制
 DELIMITER $$
 DROP PROCEDURE IF EXISTS test$$
 CREATE PROCEDURE test()
 BEGIN
 DECLARE y  INT;
 SET y = 0;
 WHILE y  <= 7 DO

 // insert query

// i want to increment a variable name like
// concat(@variable_name,"_",y) = last_insert_id();

// ....

SET  y = y + 1; 
END WHILE;
END$$
DELIMITER ;

有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-27 13:59:16

您可以使用类似数组的临时表来代替变量:

代码语言:javascript
运行
AI代码解释
复制
CREATE TEMPORARY TABLE temp_table (id INT, value INT);

INSERT INTO temp_table (id)
VALUES (0), (1), (2), (3), (4), (5), (6), (7);

您的过程将如下所示:

代码语言:javascript
运行
AI代码解释
复制
CREATE PROCEDURE test()
BEGIN
  DECLARE y INT;
  SET y = 0;
  WHILE y  <= 7 DO

    // insert query

    UPDATE temp_table
    SET value = last_insert_id()
    WHERE id = y;

    SET  y = y + 1;

  END WHILE;
END$$

之后可以使用SELECT查询来检索值:

代码语言:javascript
运行
AI代码解释
复制
DECLARE myvar INT;

SELECT value
INTO myvar
FROM temp_table
WHERE id = 1; <- "index" of your desired value
票数 0
EN

Stack Overflow用户

发布于 2018-03-27 14:03:43

您可以使用PREPARE and EXECUTE来完成此操作。我在下面的mysql客户端环境中展示了它,但您也可以在存储过程中执行相同的操作。

代码语言:javascript
运行
AI代码解释
复制
mysql> set @sql = CONCAT('SET @foo, 1, ' = 123');

mysql> prepare stmt from @sql;
Statement prepared

mysql> execute stmt;

mysql> select @foo1;
+-------+
| @foo1 |
+-------+
|   123 |
+-------+

然而,我担心你是在问一个XY Problem。您应该考虑是否有其他方法可以编写代码,而不需要无限数量的变量。例如,在插入之后,可以对生成的插入id执行任何操作。

考虑使用应用程序代码来执行插入,而不是使用存储过程。我避免使用MySQL存储过程。

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

https://stackoverflow.com/questions/49513607

复制
相关文章
MySQL外键约束使用
在MySQL中,外键约束用于确保两个表之间的数据一致性。外键约束是一种限制,它将一个表中的列与另一个表中的列相关联。具体来说,它要求在一个表中的某个列中的值必须在另一个表的某个列中存在。外键约束可以确保数据的完整性和一致性,防止数据被删除或修改时发生错误。
堕落飞鸟
2023/05/11
4.3K0
SQLAlchemy外键的使用
orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中。这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低。 SQLAlchemy中的映射关系有四种,分别是一对多,多对一,一对一,多对多 实现这种映射关系只需要外键(ForeignKey),和relationship 一对多: from sqlalchemy.ext.declarative import declarative_base from sqlalchemy impor
用户1173509
2018/01/17
2.4K0
gorm指定外键和关联外键
一直分不清association_foreignkey和foreignkey的作用,此文总结一下
平凡的学生族
2019/12/24
6.9K0
gorm指定外键和关联外键
外键约束
外键约束 foreign key 外键约束的要求: 父表和字表必须使用相同的存储引擎,禁止使用临时表; 数据库引擎只能是InnoDB; 外键列和参照列必须具有相似的数据类型,数字的长度或者是否有符号必须一样,字符长度可以不不一样; 外键列和参照列必须创建索引,参照列没有索引,mysql回自动创建索引; ----------- 下面创建两个数据表 1(父表)省份表两个字段 id (主键) 省份名称 2(子表)用户表三个字段 id (主键) 用户名称 省份编号(外键对应省表的主键id类型一样,因为需要把这个设
前朝楚水
2018/04/04
2.1K0
外键约束
     2.设置外键约束的两个表之间会有 父子关系 ,即字表中外键字段的取值范围 取决于 父表
全栈程序员站长
2022/09/06
1.7K0
明了 | MongoDB 外键的基本使用
而在MongoDB中,表示表关系,使用的是嵌套,即,一个文档嵌套一个文档的方法,作为MongoDB的两个文档的关联,以及使用,reference link作为文档和文档之间的关联。
mySoul
2020/07/22
1.9K0
每日一库:GORM 外键使用
在 GORM 中使用外键涉及到在结构体定义中指定外键关系以及数据库迁移时的操作。下面是一个使用 GORM 定义外键的示例:
孟斯特
2023/10/19
1.3K0
每日一库:GORM 外键使用
外键的设置
② 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立;
诡途
2022/05/09
2.8K0
外键的设置
Python面向对象编程-类和对象-对象的创建和使用
在Python中,对象是一种数据结构,它封装了数据和行为,并允许对它们进行操作。对象是根据类定义的,它们具有类定义的属性和方法。本文将介绍如何在Python中创建和使用对象。
玖叁叁
2023/04/19
1.2K0
mysql的外键
在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以; 外键的好处:可以使得两张表关联,保证数据的一致性
java达人
2018/01/31
5.6K0
MySQL外键约束
关系键是关系数据库的重要组成部分。关系键是一个表中的一个或几个属性,用来标识该表的每一行或与另一个表产生联系。 其中就包括外键
JavaEdge
2022/11/29
6.7K0
MySQL外键约束
Mysql外键约束
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松。外键主要用来保证数据的完整性和一致性 两个表必须是InnoDB表,MyISAM表暂时不支持外键 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如in
暖月寒星
2020/03/10
6K0
MySQL外键约束
外键其实很好理解,简单的说就是两张表建立一个连接关系。这里我们那主表A和副表B举例,我A表中有用户信息,B表中有用户订单信息。要是数据完整对应起来,肯定是需要把两张表关联起来,我们因此会在B表中村一个A表的字段,常见的我们存的是A表的主键ID外键。
兔云小新LM
2019/08/02
6.1K0
外键(FOREIGN KEY)
1、表的组织结构复杂不清晰 2、浪费空间 3、扩展性极差
全栈程序员站长
2022/09/07
9600
Oracle 数据库创建外键后禁用外键的方法
我们创建外键后,可能有时会遇到要禁用外键的情况,那么在Oracle中,我们如何对外键进行禁用呢?
用户8965210
2021/09/02
3.2K0
【说站】mysql使用foreign key创建外键
2、外键foreign key用于约束破坏表格的连接动作,保证两个表格的数据完整性。
很酷的站长
2022/11/23
1.3K0
MySQL外键使用详解--Java学习网
最近有开始做一个实验室管理系统,因为分了几个表进行存储・所以要维护表间的关联・・研究了一下MySQL的外键。
用户1289394
2021/07/09
9410
MySql---外键复习
其中:外键名为定义的外键约束的名称,一个表中不能有相同名称的外键;字段名表示子表被外健约束的字段名;主表名即被子表外键所依赖的表的名称;主键列表示主表中定义的主键列或者列组合。
大忽悠爱学习
2021/11/15
5.4K0
重温MySQL外键约束
1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照。 2、必须为父表定义主键。 3、主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 4、外键中列的数目必须和父表的主键中列的数目相同。 5、外键中列的数据类型必须和父表主键中对应列的数据类型相同。说这么多比较笼统,还是看看例子吧。
AsiaYe
2019/11/06
6.5K0
三十四、外键约束
参照完整性要求关系中不允许引用不存在的实体。在 MySQL 中设置参照完整性的方式是使用 外键约束 。所谓外键就是用于在两个表中的数据之间建立和加强链接的一列或多列的组合,可控制可在外键表中存储的数据。例如,有学生表和分数表两个表,表内容如下。
喵叔
2021/06/29
1.9K0

相似问题

javascript JSON高级

23

JavaScript鼠标悬停

10

Javascript数组。高级

20

高级javascript指南

60

JavaScript、高级.replace()

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档