我正在尝试获取最后一次 SQL 插入的唯一自动生成密钥:-
INSERT [db].[xyyz] (x,y,z) values (@x,@y,@z)
SET @RowId = SCOPE_IDENTITY();
command.Parameters.AddWithValue("@x", x);
command.Parameters.AddWithValue("@y", y);
command.Parameters.AddWithValue("@z", z);
这样,我可以访问其他表并使用相同的 RowId 来为当前事务插入数据。从而建立所有表和单个事务之间的关系。
但是我得到了错误:
必须为 @RowId 声明一个标量变量
我相信某处 RowId 是什么和它在 SQL 表中的含义之间的逻辑联系被打破了......有人可以帮我解决这个问题吗?
我在 C# 中工作,而不是在 SQL Server 中。
更新:我无法让我的代码将RowID
值存储在变量中。我努力了:
Int32 newRowID = 0;
... SQL QUERY..
...
newRowID = (Int32)command.ExecuteScalar();
但我得到一个空异常错误:
你调用的对象是空的
谁能帮我解决这个问题?