社区
数据库及相关技术
帖子详情
向数据库插入一条记录后,如何获取记录的自增ID(AutoId)值?
lbllbl
2015-04-15 02:57:56
我用TADOCommand执行一条插入命令,我想在插入成功后,取得新插入记录的AutoId值。
...全文
9137
4
打赏
收藏
向数据库插入一条记录后,如何获取记录的自增ID(AutoId)值?
我用TADOCommand执行一条插入命令,我想在插入成功后,取得新插入记录的AutoId值。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
changuncle
2016-08-11
打赏
举报
回复
各位层主辛苦了,楼主也辛苦了,正好我也遇到这个问题,前来学习下,大家回答的好认真,真心感谢各位
宝龙哥
2015-04-16
打赏
举报
回复
转载一篇文章: SELECT IDENT_CURRENT(tableName)和自增长列的纠结 项目中要用到一个功能:主表主键为自增长,要求在插入主表数据前先获得主表要插入数据的主键ID值,用在插入子表时获取主键ID。在网上搜了一下,发现SELECT IDENT_CURRENT(TableName)这个语句可以实现。可是后来发现这个语句存在一个致命问题。 问题如下:(表中数据都为空) (情况一) 当新建表数据为空时, IDENT_CURRENT(TableName)返回值为1.这时主表数据插入成功后,主表自增长列会自动赋值 1 (情况二) 当新增一条数据并删除后, IDENT_CURRENT(TableName)返回值还是1,可是现在主表插入成功后,主表自增长列会自动赋值2,而插入子表的主表ID还是1,这样就会导致主表和子表的关联字段不一致。 在网上找了几个解决方案: 1. DBCC CHECKIDENT (tableName, RESEED, 1) 重置表的标示种子为1,可是在‘情况二’下,数据库还是会以 2 赋给主表ID字段,而不是1 2. DBCC CHECKIDENT (tableName) 在”情况一”下输出为: 检查标识信息: 当前标识值'null',当前列值'null'。 在”情况二”下输出为: 检查标识信息: 当前标识值'1',当前列值'1'。 虽然根据输出信息不同,当数据表空时可以判断是‘情况一’还是‘情况二’,可是在C#中无论用ExecuteNonQuery, ExecuteScalar还是datatable返回的都是空数据 郁闷了一个下午始终没有找到答案,最后发现用下面的方法可以实现在子表中插入主表最新记录的ID值。 直接将“CONVERT(INT,IDENT_CURRENT('SalesInfo'))”作为主键ID的值添加到子表sql语句即可 如INSERT INTO PayInfo(SID) VALUES(CONVERT(INT,IDENT_CURRENT('STable')))
uhian
2015-04-16
打赏
举报
回复
针对sql server,其他数据库不知道:D
插入成功后,立即
SELECT IDENT_CURRENT('表名') AS ID
宝龙哥
2015-04-15
打赏
举报
回复
这个ID值是和要插入的数据一块进入数据库的,要取得它,必须执行一次查询
SQL Server 返回
插入
记录
的
自增
编号(包括多表
插入
等)
SQL Server 返回最后
插入
记录
的自动编号
ID
最近在开发项目的过程中遇到这么一个问题,就是在
插入
一条
记录
的后立即
获取
其在
数据库
中
自增
的
ID
,以便处理相关联的数据,怎么做?在sql server 2000中可以这样做,有几种方式。详细请看下面的讲解与对比。 一、要
获取
此
ID
,最简单的方法就是:(以下举一简单实用的例子) --创建
数据库
和表 create database My
mysql中的
自增
id
超出上限的问题
在mysql中有多种
自增
id
,除了我们日常开发中使用的
自增
主键,还有一些
自增
id
,是mysql内部,为了帮助mysql正常运行而使用的。这些
自增
id
,都是定义了初始
值
,然后不停的累加步长。对于每一种
自增
id
,在mysql中都会定义其数据类型,以及这个数据类型所占用的字节长度,也就是说每个
自增
id
,都是有上限的,只不过上限的大小不尽相同,既然
自增
id
有上限,那么就有可能被用完,问题来了,如果
自增
id
用完了,会发生什么呢? 在mysql中,对于不同的
自增
id
值
,达到上限后的处理方式是不同的。下面我们就对mysq
清空表数据后,新增数据
id
不是
自增
不是从1开始
在学习过程中发现,
数据库
中给表设置
id
为
自增
时,向表中中添加一些数据后。需要把表数据清空,但是在清空后再向表中
插入
数据发现表中的
id
不是从1开始
自增
而是接着之前的数据进行
id
自增
。
mybatis框架(6)---mybatis
插入
数据后
获取
自增
主键
mybatis
插入
数据后
获取
自增
主键 首先理解这就话的意思:就是在往
数据库
表中
插入
一条
数据的同时,返回该条数据在
数据库
表中的
自增
主键
值
。 有什么用呢,举个例子: 你编辑
一条
新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到
数据库
中。怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签
id
关联表 新闻表
插入
数据简单,标签表
插入
数据简单...
Mybatis框架(6)---Mybatis
插入
数据后
获取
自增
主键
Mybatis
插入
数据后
获取
自增
主键 首先理解这就话的意思:就是在往
数据库
表中
插入
一条
数据的同时,返回该条数据在
数据库
表中的
自增
主键
值
。 有什么用呢,举个例子: 你编辑
一条
新闻,同时需要给该新闻打上标签(可以一个或者多个:比如:女性,爱,钱等等),然后存储到
数据库
中。怎么存,肯定涉及到三张表,新闻表,标签表,新闻标签
id
关联表 新闻表
插入
数据简单,标签表插...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章