sql server返回插入记录的ID(多条记录)

sql server返回插入记录的ID(多条记录),第1张

你的这个需求好象直接再把记录插入到表2就可以,但我估计你不是这个意思。

比较笨的办法,可以定义一个数组用于记录表1的ID值,或者用个临时表来记录表一新增加的记录ID列表。

insert后,query的指针应该还是停留在最新增加的记录上的,因此是可以取得到ID值的。

代码如下,假设表一只有二个字段,一个是ID(自动增量),一个是字段A(字符型),

var

sql:string

id1:integer

begin

sql:='insert into 表一 ('''+字段A+''') values ('''+ '内容'+''')'

query1.close

query1.sql.clear

query1.sql.add(sql)

query1.Execsql

id1:=query1.fieldbyname('id').asinteger

//接下来可以把ID1的值写入临时表或者数组了,如果是需要不同的机器取得ID值,可以用临时表,不过速度会慢些,如果只是本机取得,就用数组好了。

//后面的代码略

...

...

end

上述代码我没有条件试,应该可以,另外还可以用append的方法追加记录,这样就一定可以用上面的方法取到ID值了。

var

id1:integer

begin

query1.append

query1.fieldbyname('字段A').asstring = '内容'

query1.post

id1:=query1.fieldbyname('ID').asinteger

//这种方法一定可以取得到ID值。

//后面你自行对取得的ID进行存储就行了,临时表或者数组都可以。代码略

end

在录入数据之前当前录入的数据ID为空,当你把数据完全真确录入到数据里面的时候,也就是rs.update执行完毕这个数据才算录入进去,这时ID才会产生。

要获得ID在RS.UPDARE结束后使用SQL语句查询最后一条记录的ID。这样ID才会获得到。

语句可以这样写 select top 1 * from [表的名称] order by id desc.

你可以看看这里,大致有三种办法:

#方法一是使用last_insert_id

 SELECT LAST_INSERT_ID()

#方法二是使用max(id),但是不适用高并发环境下。

方法三是创建一个存储过程,在存储过程中调用先插入再获取最大值的 *** 作

#方法四使用@@identity

select @@IDENTITY

#基本MySQL的学习,可以学习这里。使用MariaDB数据库管理系统。 linuxprobe.com/chapter-18.html

#出处:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11785446.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存