我有一个而不是触发器。我在变量中有一个值。
我想将值插入其中一列并使用inserted中的字段。这就是我想要实现的目标:
declare @someLocalVariable varchar(9)
set @someLocalVariable = dbo.someLocalUDF()
INSERT myTable (field1, field2, field3)
VALUES (@someLocalVariable, (select field2, field3 from inserted))
答案 0 :(得分:7)
INSERT INTO myTable (
field1,
field2,
field3
) SELECT
@someLocalVariable,
field2,
field3
FROM
INSERTED
请记住,如果这是由批量插入触发的(即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