首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(MySQL - Coldfusion/Lucee) -一条MySQL语句,多个插入-如何获取每个subsubCategoryID?

在MySQL中,可以使用LAST_INSERT_ID()函数来获取每个插入操作生成的自增ID值。具体步骤如下:

  1. 首先,执行一条INSERT语句将数据插入到MySQL表中,例如:INSERT INTO tableName (column1, column2, column3) VALUES (value1, value2, value3);
  2. 然后,使用LAST_INSERT_ID()函数获取刚刚插入的自增ID值,例如:SELECT LAST_INSERT_ID();

这将返回一个结果集,其中包含刚刚插入的自增ID值。

  1. 如果需要获取多个插入操作生成的自增ID值,可以在插入每条数据之后立即执行一次SELECT LAST_INSERT_ID(),并将结果保存到一个变量中。

下面是一个示例,演示如何获取每个subsubCategoryID:

代码语言:sql
复制
-- 假设有一个名为subsubCategory的表,包含以下列:subsubCategoryID、subCategoryID、categoryID、name
-- 假设有一个名为subCategory的表,包含以下列:subCategoryID、categoryID、name
-- 假设有一个名为category的表,包含以下列:categoryID、name

-- 插入subsubCategory数据,并获取自增ID
INSERT INTO subsubCategory (subCategoryID, categoryID, name) VALUES (1, 1, 'SubSubCategory 1');
SELECT LAST_INSERT_ID() AS subsubCategoryID;

-- 插入subCategory数据,并获取自增ID
INSERT INTO subCategory (categoryID, name) VALUES (1, 'SubCategory 1');
SELECT LAST_INSERT_ID() AS subCategoryID;

-- 插入category数据,并获取自增ID
INSERT INTO category (name) VALUES ('Category 1');
SELECT LAST_INSERT_ID() AS categoryID;

在上述示例中,通过执行每个插入操作后的SELECT LAST_INSERT_ID()语句,可以获取到每个subsubCategoryID、subCategoryID和categoryID的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

快速解“锁”MySQL,拿下这7把钥匙,便能撬倒面试官

前言 MySQL 作为使用范围最广的开源关系型数据库,是每个后端开发人员都绕不开的一道坎。...我在上一篇文章中也写了关于 MySQL 中的 MVCC 的细节及各个隔离级别如何使用 MVCC,有兴趣的可以查看。...间隙锁的主要目的是阻止事务往间隙中插入记录,并且间隙锁之间是可以共存的,多个事务可以同时获取得到相同间隙的锁。共享间隙锁和排他间隙锁之间并没有区别,它们是完全一样的东西。...它与上面说到的表级意向锁是完全不同的,插入意向锁是属于行级锁,并且互相之间是兼容的,互不冲突,所以多个事务可以同时获取到相同间隙的 II Gap 锁。...2:并发性能最高,但是不能保证同一条 insert 语句内的自增值是连续的。 想要了解更多关于此配置的内容可以查看 MySQL 的这篇文档。 总结 InnoDB 的四种行锁的兼容性,如下表所示: ?

69920

解决死锁之路(终结篇)- 再见死锁

这里显示的是正在等待锁的 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他的 SQL 语句,或者根据...如果每个事务都只有一条 SQL 语句,这种情况的死锁成因还算比较好分析,因为我们可以从死锁日志里找到每个事务执行的 SQL 语句,只要对这两条 SQL 语句的加锁过程有一定的了解,死锁原因一般不难定位。...不过大多数情况下,每个事务都不止一条 SQL 语句,譬如上面的死锁日志里显示的 undo log entries 15,说明执行 INSERT 语句之前肯定还执行了其他的 SQL 语句,但是具体是什么,...别看这个案例里每个事务都只有一条 SQL 语句,但是却实实在在可能会导致死锁问题,其实说起来,这个死锁和案例一并没有什么区别,只不过理解起来要更深入一点。...(1)之如何阅读死锁日志 【MySQL如何阅读死锁日志 InnoDB locking MySQL中的事务与锁 mysql死锁问题分析 MySQL · 引擎特性 · InnoDB 事务锁系统简介 MySQL

2.5K71
  • 【技术创作101训练营】认识Mysql死锁,并给它说再见

    只有这样,在发生线上环境死锁问题时,我们才能第一时间获取到数据库相关的死锁日志。那如何开启这个日志呢?...这里显示的是正在等待锁的 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他的 SQL 语句,或者根据...这是每个开发人员和 DBA 最关心的问题,那如何通过死锁日志来诊断死锁的成因?实际上这是非常困难的。...如果每个事务都只有一条 SQL 语句,这种情况的死锁成因还算比较好分析,因为我们可以从死锁日志里找到每个事务执行的 SQL 语句,只要对这两条 SQL 语句的加锁过程有一定的了解,死锁原因一般不难定位。...不过大多数情况下,每个事务都不止一条 SQL 语句,譬如上面的死锁日志里显示的 undo log entries 15,说明执行 INSERT 语句之前肯定还执行了其他的 SQL 语句,但是具体是什么,

    62310

    异地多活场景下的数据同步之道

    2 如何实现数据同步 需要同步的组件有很多,例如数据库,缓存等,这里以多个Mysql集群之间的数据同步为例进行讲解,实际上缓存的同步思路也是类似。...2.2 如何获取全量+增量数据? 通常,mysql不会保存所有的历史binlog。...2.2 如何解决重复插入 考虑以下情况下,源库中的一条记录没有唯一索引。...接着,笔者执行set sql_log_bin=0,然后插入一条语句,最后可以看到的确没有产生新的binlog事件: ? 通过这种方式,貌似可以解决数据回环问题。...0 注意这里,对于一条insert语句,其影响的记录函数居然为0,也就会插入并没有产生记录,也就不会产生binlog,避免了循环问题。

    3.7K41

    异地多活场景下的数据同步之道

    二、如何实现数据同步 需要同步的组件有很多,例如数据库、缓存等,这里以多个MySQL集群之间的数据同步为例进行讲解,实际上缓存的同步思路也是类似。...2、如何获取全量+增量数据? 通常,MySQL不会保存所有的历史binlog。...3、如何解决重复插入 考虑以下情况下,源库中的一条记录没有唯一索引。...接着,笔者执行set sql_log_bin=0,然后插入一条语句,最后可以看到的确没有产生新的binlog事件: ? 通过这种方式,貌似可以解决数据回环问题。...影响的记录行数为0 注意这里,对于一条insert语句,其影响的记录函数居然为0,也就会插入并没有产生记录,也就不会产生binlog,避免了循环问题。

    2.1K30

    Python爬虫之关系型数据库存储#5

    多个表组成一个数据库,也就是关系型数据库。 关系型数据库有多种,如 SQLite、MySQL、Oracle、SQL Server、DB2 等。...插入数据 下一步就是向数据库中插入数据了。例如,这里爬取了一个学生信息,学号为 20120001,名字为 Bob,年龄为 20,那么如何将该条数据插入数据库呢?...比如插入一条数据,不会存在插入一半的情况,要么全部插入,要么都不插入,这就是事务的原子性。另外,事务还有 3 个属性 —— 一致性、隔离性和持久性。...然后将其结果和类型打印出来,它是二重元组,每个元素都是一条记录,我们将其遍历输出出来。 但是这里需要注意一个问题,这里显示的是 3 条数据而不是 4 条,fetchall 方法不是获取所有数据吗?...本节中,我们介绍了如何使用 PyMySQL 操作 MySQL 数据库以及一些 SQL 语句的构造方法,后面会在实战案例中应用这些操作来存储数据。

    14711

    MVCC 原理分析、MySQL如何解决幻读的

    串行化(SERIALIZABLE),每个读写操作都会加锁,多个事务要访问同一条记录时,必须要进行排队,优先级低的事务必须等优先级高的事务完成以后才能进行。...指维护一个数据的多个版本,使得读写操作没有冲突,即在同一时刻同一条记录在系统中可以存在多个版本。快照读为MySQL实现MVCC提供了一个非阻塞读功能。...而RR 是可重复读,在一个事务中,执行两次相同的select语句,查询到的结果是一样的。那MySQL如何做到可重复读的呢?...记录锁是有 S 锁(共享锁)和 X 锁(排他锁)之分的,当一个事务获取一条记录的 S 型记录锁后,其他事务也可以继续获取该记录的 S 型记录锁,但不可以继续获取 X 型记录锁;当一个事务获取一条记录的...只要我不让你插入,就不会发生幻读。参考 黑马程序员MySQL相关视频笔记、美团面试官:可重复读隔离级别实现原理是什么?(一文搞懂MVCC机制)、MySQL 如何解决幻读(MVCC 原理分析)

    47410

    InnoDB学习之死锁

    A申请获取B持有的那个锁,但是被B占用着,所以A等待。 B申请获取A持有的那个锁,但是被A占用着,所以B等待。 InnoDB死锁示例 以下示例说明了锁定请求将导致死锁时如何发生错误。...它会在(1,5) (5,10)之间加间隙锁,由于间隙锁互相兼容,故该锁可以获取,另外在(5)这个地方申请插入意向锁。...当事务1要获取插入意向锁时,发现(3)被事务2的间隙锁锁住了,故等待事务2释放锁; 事务2要获取插入意向锁时,发现(5)被事务1的间隙锁锁住了,故等待事务1释放锁;——死锁形成 银行转账的例子 create...死锁的必要条件 多个并发事务(2个或者以上); 每个事务都持有锁(或者是已经在等待锁); 每个事务都需要再继续持有锁(为了完成事务逻辑,还必须更新更多的行); 事务之间产生加锁的循环等待,形成死锁。...例如,将数据库操作组织成应用程序中的函数,或调用存储过程,而不是在不同的地方编写多个类似的INSERT、UPDATE和DELETE语句序列。 向表中添加精心选择的索引。

    61820

    解决死锁之路(终结篇)- 再见死锁

    这里显示的是正在等待锁的 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他的 SQL 语句,或者根据...这可能也是每个开发人员和 DBA 最关心的问题,如何通过死锁日志来诊断死锁的成因?实际上这是非常困难的。...如果每个事务都只有一条 SQL 语句,这种情况的死锁成因还算比较好分析,因为我们可以从死锁日志里找到每个事务执行的 SQL 语句,只要对这两条 SQL 语句的加锁过程有一定的了解,死锁原因一般不难定位。...不过大多数情况下,每个事务都不止一条 SQL 语句,譬如上面的死锁日志里显示的 undo log entries 15,说明执行 INSERT 语句之前肯定还执行了其他的 SQL 语句,但是具体是什么,...3.3 死锁案例三 别看这个案例里每个事务都只有一条 SQL 语句,但是却实实在在可能会导致死锁问题,其实说起来,这个死锁和案例一并没有什么区别,只不过理解起来要更深入一点。

    9.8K116

    告诉你 38 个 MySQL 数据库的小技巧!

    06 每个表中都要有一个主键吗? 并不是每一个表中都需要主键,一般的,如果多个表之间进行连接操作时,需要用到主键。因此并不需要为每个表建立主键,而且有些情况最好不使用主键。...设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的 值,这样新插入的记录的自增字段值从初始值开始递增....默认的情况下,当插入一条记录但并没有指定 TIMESTAMP 这个列值时, MySQL 会把 TIMESTAMP 列设为当前的时间。...14 如何从日期时间值中获取年、月、日等部分日期或时间值?...同理,读者可以根据其他日期和时间的位置,计算并获取相应的值。 15 如何改变默认的字符集?

    2.6K40

    告诉你38个MySQL数据库的小技巧!

    6、每个表中都要有一个主键吗? 并不是每一个表中都需要主键,一般的,如果多个表之间进行连接操作时,需要用到主键。 因此并不需要为每个表建立主键,而且有些情况最好不使用主键。...设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的 值,这样新插入的记录的自增字段值从初始值开始递增,如在tb_emp8中插入一条记录,同时 指定id值为5,则以后插入的记录的...默认的情况下,当插入一条记录但并没 有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。...14、如何从日期时间值中获取年、月、日等部分日期或时间值?...在执行插入语句的时候,MySQL 要为新插入的记录建立索引。所以过多的索引会导致插入操作变慢。原则上是只有查询用的字段 才建立索引。 38、如何使用查询缓冲区?

    2.6K10

    37 个 MySQL 数据库小技巧,不看别后悔!

    6、每个表中都要有一个主键吗? 并不是每一个表中都需要主键,一般的,如果多个表之间进行连接操作时,需要用到主键。 因此并不需要为每个表建立主键,而且有些情况最好不使用主键。...设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的 值,这样新插入的记录的自增字段值从初始值开始递增,如在tb_emp8中插入一条记录,同时 指定id值为5,则以后插入的记录的...默认的情况下,当插入一条记录但并没 有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。...14、如何从日期时间值中获取年、月、日等部分日期或时间值?...同理,读者可以根据其他日期和时间的位置,计算并获取相应的值。 15、如何改变默认的字符集?

    1.8K20

    MySQL数据库实用技巧

    6、每个表中都要有一个主键吗? 并不是每一个表中都需要主键,一般的,如果多个表之间进行连接操作时,需要用到主键。 因此并不需要为每个表建立主键,而且有些情况最好不使用主键。...设置自增属性(AUTO_INCREMENT)的时候,还可以指定第一条插入记录的自增字段的 值,这样新插入的记录的自增字段值从初始值开始递增,如在tb_emp8中插入一条记录,同时 指定id值为5,则以后插入的记录的...默认的情况下,当插入一条记录但并没 有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。...14、如何从日期时间值中获取年、月、日等部分日期或时间值?   ...在执行插入语句的时候,MySQL 要为新插入的记录建立索引。所以过多的索引会导致插入操作变慢。原则上是只有查询用的字段 才建立索引。 38、如何使用查询缓冲区?

    2.5K10

    Python操作MySQL存储,这些你都会了吗?

    插入数据 下一步就是向数据库中插入数据了。例如,这里爬取了一个学生信息,学号为20120001,名字为Bob,年龄为20,那么如何将该条数据插入数据库呢?...比如插入一条数据,不会存在插入一半的情况,要么全部插入,要么都不插入,这就是事务的原子性。另外,事务还有3个属性——一致性、隔离性和持久性。这4个属性通常称为ACID特性,具体如下表所示。...然后将其结果和类型打印出来,它是二重元组,每个元素都是一条记录,我们将其遍历输出出来。 但是这里需要注意一个问题,这里显示的是3条数据而不是4条,fetchall()方法不是获取所有数据吗?...我们最初调用了一次fetchone()方法,这样结果的偏移指针就指向下一条数据,fetchall()方法返回的是偏移指针指向的数据一直到结束的所有数据,所以该方法获取的结果就只剩3个了。...本节中,我们介绍了如何使用PyMySQL操作MySQL数据库以及一些SQL语句的构造方法。

    1.7K61

    mysql 主键自增语句_MySQL 自增主键

    自增主键有两个性质需要考虑: 单调性 每次插入一条数据,其 ID 都是比上一条插入的数据的 ID 大,就算上一条数据被删除。...MySQL 5.7 及之前的版本,自增主键最大值会在启动(重启)后从数据库中取出放到内存: SELECT MAX(ai_col) FROM table_name FOR UPDATE; 这样获取是通过计算的...如何解决单调性的问题? 从 MySQL 8.0 开始,自增主键最大值会在每次修改后写入到 redo log,并且在每个检查点写入引擎私有的系统表。 如果是正常重启,则读取系统表里的值。...对于两个插入事务,事务 A 先执行插入语句,之后事务 B 执行插入语句。在这之后,事务 A 回滚,导致 A 执行插入语句时占用的 ID 被抛弃。...该锁是一种特殊的表锁(table-level lock),但会在插入语句执行后立即释放,不会等到事务结束。 如何解决连续性问题? 使用最高隔离级别 SERIALIZABLE (串行)。

    10.8K10

    一条简单的更新语句MySQL如何加锁的?

    看如下一条sql语句: # table T (id int, name varchar(20)) delete from T where id = 10; MySQL在执行的过程中,是如何加锁呢?...组合三:id不唯一索引+RC 该组合中,id列不在唯一,而是个普通索引,那么当执行sql语句时,MySQL又是如何加锁呢?看下图: ?...那么该如何解决这个问题呢?如何保证多次当前读返回一致的记录,那么就需要在多个当前读之间,其他事务不会插入新的满足条件的记录并提交。为了实现该结果,Gap锁就应运而生。...一个等值查询,最多只能返回一条满足条件的记录,而且新的相同取值的记录是无法插入的。...一条简单的删除语句加锁情况也就分析完成了,但是学习不止于此,还在继续,对于复杂SQL语句又是如何加锁的呢?MySQL中的索引的分析又是怎样的呢?性能分析、性能优化这些又是怎么呢?

    3.7K20

    mysql binlog应用场景与原理深度剖析

    在这种场景下: 有一个主库Master,所有的更新操作都在master上进行 同时会有多个Slave,每个Slave都连接到Master上,获取binlog在本地回放,实现数据复制。...我们可以进行一些优化,之所以不同场景模拟多个slave来连接master获取同一份binlog,本质上要满足的是:一份binlog数据,同时提供给多个不同业务场景使用,彼此之间互不影响。...在mysql中,我们可以通过"show binary logs"语句,来查看当前有多少个binlog文件,以及每个binlog文件的大小,如下: ?...接着,是一个Intvar Event,因为我们的Insert语句插入的表中,主键是自增的(AUTO_INCREMENT)列,Mysql首先会自增一个值,这就是Intvar Event的作用,这里我们看到...例如用户误删除的数据,执行的是DETELE语句,由于Row模式下会记录变更之前的字段的值,我们可以将其反解成一个INSERT语句,重新插入,从而实现数据恢复。

    2.7K30

    mysql binlog应用场景与原理深度剖析

    在这种场景下: 有一个主库Master,所有的更新操作都在master上进行 同时会有多个Slave,每个Slave都连接到Master上,获取binlog在本地回放,实现数据复制。...我们可以进行一些优化,之所以不同场景模拟多个slave来连接master获取同一份binlog,本质上要满足的是:一份binlog数据,同时提供给多个不同业务场景使用,彼此之间互不影响。...在mysql中,我们可以通过"show binary logs"语句,来查看当前有多少个binlog文件,以及每个binlog文件的大小,如下: ?...接着,是一个Intvar Event,因为我们的Insert语句插入的表中,主键是自增的(AUTO_INCREMENT)列,Mysql首先会自增一个值,这就是Intvar Event的作用,这里我们看到...例如用户误删除的数据,执行的是DETELE语句,由于Row模式下会记录变更之前的字段的值,我们可以将其反解成一个INSERT语句,重新插入,从而实现数据恢复。

    79811

    MySQL 教程下

    触发器可在一个操作发生之前或之后执行,这里给出了 AFTER INSERT,所以此触发器将在 INSERT 语句成功执行后执行。这个触发器还指定FOR EACH ROW,因此代码对每个插入行执行。...MySQL 复制表 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。...; 获取服务器元数据 以下命令语句可以在 MySQL 的命令提示符使用,也可以在脚本中 使用,如 PHP 脚本。...❑ 总是有不止一种方法编写同一条 SELECT 语句。应该试验联结、并、子查询等,找出最佳的方法。 ❑ 使用 EXPLAIN 语句MySQL 解释它将如何执行一条 SELECT 语句。...❑ 一般来说,存储过程执行得比一条一条地执行其中的各条 MySQL 语句快。 ❑ 应该总是使用正确的数据类型。 ❑ 决不要检索比需求还要多的数据。

    1K10
    领券