VB.Net使用事务插入并重复使用最后插入的ID

代码生成

我正在尝试SqlTransaction在VB.Net中使用A对两个表执行插入操作,我想将第一个表中最后插入的ID插入第二个表的列中。

我想使用OUTPUT INSERTED.ID而不是@SCOPE_IDENTITY()

这是从SQL Server Profiler中提取的两个查询:

INSERT INTO USER(USER_NAME) 
OUTPUT INSERTED.USER_ID 
VALUES (@USER_NAME)

INSERT INTO USER_ADDRESS(USER_ID, USER_ADDRESS) 
VALUES ('', GETDATE(), ''001'', @OPD_OVP_NO, @OPD_PAT_CODE, @OPD_DATE, @OPD_AMOUNT)

这是VB.Net代码:

    Dim sqlTransaction As SqlTransaction= sqlConnection.BeginTransaction
    Dim sqlCommand As New SqlCommand With {.Connection = sqlConnection}
    sqlCommand.CommandText = "INSERT INTO USER(USER_NAME) OUTPUT INSERTED.USER_ID VALUES (@USER_NAME)"
    sqlCommand.Parameters.AddWithValue("@USER_NAME", "ABC")
    sqlCommand.Transaction = sqlTransaction
    sqlCommand.ExecuteNonQuery()

    sqlCommand.Parameters.Clear()
    sqlCommand.CommandText = "INSERT INTO USER_ADDRESS(USER_ID,USER_ADDRESS)VALUES(@LASTID, @USER_ADDRESS)"
    sqlCommand.Parameters.AddWithValue("@LASTID", LASTID)'//LAST ID should be from the previously inserted ID
    sqlCommand.Parameters.AddWithValue("@USER_ADDRESS","AB Street")
    sqlCommand.Transaction = sqlTransaction
    sqlCommand.ExecuteNonQuery()

    sqlTransaction.Commit()

我检查了其他线程,但它们仅显示如何从@SCOPE_IDENTITY()或从中获取最后插入的ID OUTPUT INSERTED.USER_ID,但是没有关于如何为另一个insert语句重用该值的任何内容。

诅咒堆积器

您不能直接在第二个语句中使用第一个insert语句的INSERTED.ID。

您应该首先使用OUTPUT INTO将其存储在临时表中。

DECLARE @MyTableVar table(USER_ID int);
DECLARE @NewUserID int;

INSERT INTO USER(USER_NAME)
OUTPUT INSERTED.USER_ID INTO @MyTableVar
VALUES (@USER_NAME);

SET @NewUserID = (SELECT USER_ID FROM @MyTableVar);

INSERT INTO USER_ADDRESS(USER_ID, USER_ADDRESS)
VALUES(@NewUserID, @USER_ADDRESS);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL使用VB.net插入错误

来自分类Dev

MySQL使用VB.net插入错误

来自分类Dev

使用Linq批量插入Sql(vb.net)

来自分类Dev

插入VB清单

来自分类Dev

Android SQLite使用事务批量插入

来自分类Dev

PowerPoint VSTO(VB.NET)-插入UserControl?

来自分类Dev

VB.NET mySQL插入命令

来自分类Dev

如何使用日期时间选择器使用vb.net在SQL中仅插入日期

来自分类Dev

在VB中将数据插入sqlclient

来自分类Dev

无法使用vb.net将路径文件地址插入mysql

来自分类Dev

使用vb.net将MS Access行插入数据库

来自分类Dev

如何使用vb.net从ListView插入多个行/记录/项以访问MS

来自分类Dev

使用vb.net从Sql数据库中插入,更新和删除数据?

来自分类Dev

使用数据集将值插入2D数组VB.Net

来自分类Dev

使用VB.Net将DateTime插入到postgreSql数据库中

来自分类Dev

使用VB.NET将Unicode /字符集数据插入SQL Server 2012

来自分类Dev

如何使用 VB.NET 在托管数据库中插入数据

来自分类Dev

在 vb.net 中插入到使用 MS Access 中的语法错误

来自分类Dev

如何使用VB.NET将SQL中的图片插入EXCEL

来自分类Dev

vb.net并使用SQLite

来自分类Dev

防止插入重复的数据记录(3列作为1条记录)-vb.net

来自分类Dev

VB使用日期选择

来自分类Dev

VB.NET和VB之间的区别

来自分类Dev

使用vb.net在datagridview中重复值

来自分类Dev

VB6使用VB.NET类-它很慢

来自分类Dev

访问10是否使用VB 6或VB.Net

来自分类Dev

如何使用VB.NET将DataAdapter配置为对选择,更新,插入和删除命令使用Sql Server存储过程?

来自分类Dev

使用ASP.net(Vb.net)将数据从上传的Excel文档插入数据库

来自分类Dev

使用ASP.net(vb.net)中的参数将数据插入MySqlDatabase时遇到问题

Related 相关文章

热门标签

归档