В SQL Server возможно получать “идентификатор” записи, когда Вставка выполняется?

12
задан Community 23 May 2017 в 12:25
поделиться

6 ответов

В .NET, по крайней мере, можно отправить несколько запросов на сервер сразу. Я делаю это в своем приложении:

command.CommandText = "INSERT INTO [Employee] (Name) VALUES (@Name); SELECT SCOPE_IDENTITY()";
int id = (int)command.ExecuteScalar();

Работы как очарование.

32
ответ дан 2 December 2019 в 03:03
поделиться

При вставке нескольких строк использования OUTPUT и INSERTED.columnname пункт на insert, оператор является простым способом получить все идентификаторы во временную таблицу.

DECLARE @MyTableVar table( ID int,  
                               Name varchar(50),  
                               ModifiedDate datetime);  
INSERT MyTable  
        OUTPUT INSERTED.ID, INSERTED.Name, INSERTED.ModifiedDate INTO @MyTableVar  
SELECT someName, GetDate() from SomeTable  
15
ответ дан 2 December 2019 в 03:03
поделиться
3
ответ дан 2 December 2019 в 03:03
поделиться

SCOPE_IDENTITY (); Ваш лучший выбор. И если Вы используете.NET, просто передают наш параметр и проверяют значение после того, как процедура выполняется.

CREATE PROCEDURE [dbo].[InsertProducts]
    @id             INT             = NULL OUT,
    @name           VARCHAR(150)    = NULL,
    @desc           VARCHAR(250)    = NULL

AS

    INSERT INTO dbo.Products
       (Name,
        Description)
    VALUES
       (@name,
        @desc)

    SET @id = SCOPE_IDENTITY();
2
ответ дан 2 December 2019 в 03:03
поделиться

Необходимо выбрать scope_identity () функция.

, Чтобы сделать это от кода приложения, я обычно инкапсулирую этот процесс в хранимой процедуре, таким образом, это все еще похоже на один запрос к моему приложению.

1
ответ дан 2 December 2019 в 03:03
поделиться

Я склонен предпочитать присоединять триггер к таблице с помощью руководителя предприятия. Тем путем Вы не должны волноваться о выписывании дополнительных sql операторов в Вашем коде. Мои выглядят примерно так:

Создают Триггер tblName На dbo.tblName Для Вставки Как выбор new_id = @@ ИДЕНТИФИКАЦИОННЫЕ ДАННЫЕ

Затем из Вашего кода, рассматривают Ваши операторы вставки как избранные операторы - Просто выполняют и оценивают результаты. "newID" столбец будет содержать идентификационные данные строки, которую Вы просто создали.

1
ответ дан 2 December 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: