我正在使用旧的 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;
但这似乎并没有改善这种情况。
我究竟做错了什么?
(或者,我可以在一个事务中分别运行这两个查询,但我也想知道为什么我的解决方案不起作用。)