2011-01-26 6 views
2

トリガーではなく、トリガーがあります。私は変数に値を持っています。トリガーではなくSQL Server変数と値が挿入された文を挿入

私は列のいずれかに値を挿入し、フィールドを挿入して使用したいと思います。すべてのレコードが、ターゲット表に挿入されます、

declare @someLocalVariable varchar(9) 

set @someLocalVariable = dbo.someLocalUDF() 

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

UDFは何をしていますか? – DForck42

答えて

7
INSERT INTO myTable (
    field1, 
    field2, 
    field3 
) SELECT 
    @someLocalVariable, 
    field2, 
    field3 
FROM 
    INSERTED 

はただ、これはバッチ挿入によってトリガされた場合(つまり、INSERTEDが複数のレコードを持っている)ことを覚えている:これは私が達成しようとしているものです。 (いくつかの理由の人々は通常、そのことを忘れることは私見を行うものでなければならまさにです。)

編集

OPは彼の質問は本当に程度だったことを言うのを忘れています生成固有の主キー値。その場合、そのような方法の1つは次のようなものになります。

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 
+2

+1 OPがなぜこのようにデフォルトを使用しているのかわからない。 –

+0

@マーティン:確かに。 – rsenna

+0

私のudfが文字列の主キーをインクリメントしています。バルクインサートでは正しく動作しません。 INSERTEDをudfの値で更新し、挿入されたすべてを挿入する方法はありますか? – tim

関連する問題