0

我正在使用旧的 Sybase 数据库,在一个有Identity列的表上。向表中插入值时,我需要检索新的标识值。

我一直在这里那里收集想法。由于数据库不知道Ident_Current(), nor Scope_Identity, 也不知道Insert查询可以有Output子句,因此我尝试OleDbCommand使用以下内容初始化 an:

Insert Into DatabaseName..TableName 
(Tbl_ColumnA, Tbl_ColumnB, Tbl_ColumnC, Tbl_ColumnD, Tbl_ColumnE, 
Tbl_ColumnF, Tbl_ColumnG) 
Values (
'Valid string for column A', 'Valid string for column B', 'Same for column C', 'And for D', 
'And E', 'And F too', Null
) ; Select Max(Tbl_Id) From DatabaseName..TableName; 

当执行到达OleDbCommand.ExecuteScalar()时,它似乎冻结了。(暂停调试表明它仍在该指令上,但它似乎没有做任何事情。)

检查 的内容TableName表明新行已正确插入TableName

但我没有得到任何结果。

我也试过用 替换Select Max(Tbl_Id) From DatabaseName..TableName;Select @@Identity;但这似乎并没有改善这种情况。

我究竟做错了什么?

(或者,我可以在一个事务中分别运行这两个查询,但我也想知道为什么我的解决方案不起作用。)

4

0 回答 0