2011-01-26 2 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 하나 개 이상의 기록을 가지고) 기억 : 이것은 내가 달성하기 위해 노력하고 무엇인가 . (어떤 이유로 사람들이 일반적으로 그것에 대해 잊지 것이 IMHO을 수행해야하지만 정확히 무엇이다.)

편집

영업 이익은 그의 질문은 정말 대해 무슨 말을 잊어 버린 : 생성 고유 기본 키 값. 따라서 그 경우 한 가지 방법은 다음과 같습니다.

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

@ Martin : 확실한 것. – rsenna

+0

my udf가 문자열 기본 키를 증가시킵니다. 그래서 당신은 그것이 일괄 삽입을 위해 작동하지 않습니다 맞습니다. udf 값으로 INSERTED를 업데이트 한 다음 삽입 된 모든 것을 삽입하는 방법이 있습니까? – tim

관련 문제