以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一次性插入多行时如何获取新增行的真正的_identify  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=183087)

--  作者:happyft
--  发布时间:2022/10/23 21:07:00
--  一次性插入多行时如何获取新增行的真正的_identify
在foxtable的窗口的保存按钮中用sql事务执行保存, 如下所示:
1 一次性将多行新增到sql数据库中的采购入库明细表中;
insert into 采购入库明细 (入库单号,产品编码,数量,入库日期) select  ..... from xxx  \'明细表中一次新增多行

2 将采购入库明细新增的行添加到出入库记录表中
insert into 出入库记录表 (进出单号,产品编码,数量,进出日期,行号) select  ..... from xxx

我的问题是: 新增行的_identify在foxtable窗口中是临时的,如果在第1项sql语句执行后,
在第2行语句执行时如何能获取1处刚插入的多行的实际的_Identify作为行号新增到出入库记录表中,因为后续修改删除都必须用此行号才能正确识别

帮助中的Select SCOPE_IDENTITY()例子只是在每一次插入一行后返回;没有多行一次性插入的写法

谢谢!




--  作者:有点蓝
--  发布时间:2022/10/23 21:11:00
--  
找能够识别采购入库明细这个表唯一的数据取查和获取_Identify。

比如入库单号是唯一的,就通过入库单号查询获取,如果不是唯一就增加字段比如通过入库单号,产品编码查询

--  作者:HappyFt
--  发布时间:2022/10/23 21:30:00
--  
大概明白了,入库单号是先生成的,已经有明确的值,那意思是第2项的语句就不用从foxtable的界面新增的明细表拼接了,因为第一项
insert into 采购入库明细 (入库单号,产品编码,数量,入库日期) select  ..... from xxx  \'明细表中一次新增多行
后可以用入库单号直接从sql数据库中查询到此入库单号的所有明细数据,也就是第2项这样用对吧
 insert into 出入库记录表 (进出单号,产品编码,数量,进出日期,行号)  select 入库单号,产品编码,数量,入库日期,_Identify from 采购入库明细 where 入库单号 = xxxx

但有个疑问,因为上面的语句是用事务全部语句执行完才一起提交的,是不是只要是第一项插入明细表的sql语句在前面,第二项sql语句就可以提取到sql数据库中刚插入的明细数据了,
虽然执行到第二项时事务没正式提交,

--  作者:有点蓝
--  发布时间:2022/10/23 21:37:00
--  
是的,只要第一条语句先执行,第二条语句就可以获取正确的_Identify值
--  作者:HappyFt
--  发布时间:2022/10/23 21:46:00
--  
好的,谢谢!