sql server而不是触发器插入语句,其中包含插入的变量和值

tim*_*tim 2 sql t-sql sql-server triggers

我有一个而不是触发器.我在变量中有一个值.

我想将值插入其中一列并使用inserted中的字段.这就是我想要完成的事情:

declare @someLocalVariable varchar(9)

set @someLocalVariable = dbo.someLocalUDF()

INSERT myTable (field1, field2, field3)
VALUES (@someLocalVariable, (select field2, field3 from inserted))
Run Code Online (Sandbox Code Playgroud)

rse*_*nna 7

INSERT INTO myTable (
    field1,
    field2,
    field3
) SELECT
    @someLocalVariable,
    field2,
    field3
FROM
    INSERTED
Run Code Online (Sandbox Code Playgroud)

请记住,如果这是由批量插入触发的(即INSERTED具有多个记录),则所有记录也将插入到目标表中.

(这正是它应该做的恕我直言,但出于某种原因,人们通常会忘记这一点.)

编辑

OP忘记说出他的问题是什么:生成唯一的主键值.那么,在这种情况下,一种方法是这样的:

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
Run Code Online (Sandbox Code Playgroud)

  • +1不知道为什么OP不仅仅使用默认值. (2认同)