У меня есть SQL Server в качестве бэкэнда для приложения asp.net. Несколько человек могут вставить данные в одну и ту же таблицу «в одно и то же время ...».
Когда я читаю решение / ответ из этого поста: scope_identity vs ident_current
ТОГДА мне не следует использовать Ident_current
, потому что я могу получить идентификатор вставки другого пользователя.
Но использование Select Scope_Identity();
возвращает мне значение NULL, тогда как Select IDENT_CURRENT('tableName')
возвращает мне правильный идентификатор, который я проверил в SQL Server Management Studio.
Оператор вставки, который я делаю в SqlTransaction
. Select IDENT_CURRENT('tableName')
выполняется после транзакции.
Что я не прав?
UPDATE
Мой оператор вставки, который динамически создается базовым классом:
INSERT INTO TEST (NAME) VALUES (@Name)
Коллекция параметров команды имеет значение "xxx", и все отлично вставлено в таблицу.
Я НЕ использую хранимые процедуры только в чистом виде SqlDataReader
с C #.
commandText = "INSERT INTO TEST (NAME) VALUES ('Test1');Select Scopy_Identity();"
Как я могу получить последний auto inc id, выполняющий вышеприведенный оператор, и я должен позвонить ExecuteNonQuery
или ExecuteReader
для вышеупомянутого, потому что у него есть INSERT
и SELECT
, что сбивает с толку ...