SQL Server вместо оператора триггера вставки с переменными и значениями из вставленного - PullRequest
2 голосов
/ 26 января 2011

У меня вместо триггера. У меня есть значение в переменной.

Я хотел бы вставить значение в один из столбцов и использовать поля из вставленного. Вот что я пытаюсь сделать:

declare @someLocalVariable varchar(9)

set @someLocalVariable = dbo.someLocalUDF()

INSERT myTable (field1, field2, field3)
VALUES (@someLocalVariable, (select field2, field3 from inserted))

1 Ответ

7 голосов
/ 26 января 2011
INSERT INTO myTable (
    field1,
    field2,
    field3
) SELECT
    @someLocalVariable,
    field2,
    field3
FROM
    INSERTED

Просто помните, что если это было вызвано пакетной вставкой (т. Е. INSERTED имеет более одной записи), все записи также будут вставлены в целевую таблицу.

(что именнодолжен делать ИМХО, но по какой-то причине люди обычно забывают об этом.)

Редактировать

ОП забыл сказать, о чем на самом деле был его вопрос: создание уникального первичногоключевые значения.Итак, в этом случае, один из способов сделать это будет примерно так:

CREATE TRIGGER
    dbo.InsteadOfInsertMyTable
    ON MyTable
    INSTEAD OF INSERT
AS
BEGIN
    INSERT INTO myTable (
        primaryKeyField,
        field2,
        field3
    ) SELECT
        dbo.someUniqueValueGeneratorUDF(),
        field2,
        field3
    FROM
        INSERTED
END
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...