dbo, полные права доступа, локальная база данных SQL Server Express, таблицы, которые я создал и которыми владею.
Я только что вставил строку в MLA
, и если я сделал SELECT * FROM MLA
, я получил строку, которую я простовставлен ...
19 2019-04-16 15:02:52.000 Test
"19" - это ключ, который является столбцом идентификаторов.Поэтому я пытаюсь получить этот ключ с любым из этих ...
SELECT SCOPE_IDENTITY()
SELECT IDENT_CURRENT('MLA')
SELECT @@IDENTITY
И все они возвращают NULL.
Строка была вставлена с этой строкой кода:
DbS.Execute(SQL)
где DbS - активное работающее соединение с сервером, который также использовался для вставки.Затем я пытаюсь получить ключ с помощью этого кода:
Dim DT as RecordSet
DT = DbS.Open("SELECT IDENT_CURRENT('USAA_ArgusVal_MLA')")
Я могу представить, что Open создает новую область действия, которая не объясняет @@IDENTITY
UPDATE : вот решение, которое было предложено ниже, я просто добавил SELECT
к существующему оператору INSERT
SQL и изменил .Execute
на использование этого кода
SQL &= vbCrLf & "SELECT SCOPE_IDENTITY() AS MLAKey"
Dim DI As RecordSet = DbS.Open(SQL)
If DI.Read Then
MLAKey = DI!MLAKey
Else
MLAKey = ""
End If