2014-11-27 2 views
0

오후 모두!특정 데이터에 대한 SQL Server 트리거

나는 직장에서 대규모 데이터베이스 작업을하고 있으며 특별히 데이터베이스에 트리거를 구현하도록 요청했습니다.

기본적으로 우리는 모두 다른 정보를 포함하는 테이블 집합을 가지고 있지만 특정 테이블에서 'fieldID'열에 특정 범위의 값이 입력되면 트리거으로 설정해야합니다.

이 경우 사용자가 fieldID> = 4이고 fieldID가 < = 9 인 데이터를 INSERT하는 경우 데이터를 다른 테이블에 삽입하라는 명령과 함께 SQL Server를 트리거해야합니다. 나는 새로운 레코드가 일반적으로 입력 할 때 그들이에서 작동하는 방법을 트리거 및 대한 온라인으로 물건의 하중을 발견했습니다

INSERT INTO myTestTable(state, process, fieldID) VALUES ('ACTIVE', 13,9); 
(and the database actually performing) 
INSERT INTO myFieldTable(state, process, fieldID) VALUES ('ACTIVE', 13,9); 

INSERT INTO myTestTable(state, process, fieldID) VALUES ('ACTIVE', 13,42); 
(and the database actually performing) 
INSERT INTO myTestTable(state, process, fieldID) VALUES ('ACTIVE', 13,42); 

예를 들어

,하지만에 대한 아무것도 특정 데이터 간단한에서

답변

0

양식을 작성하면 INSTEAD OF INSERT 트리거를 작성하여 수행하려는 작업을 수행 할 수 있습니다. 아래 내용 중

CREATE TRIGGER trg_testoninsert on myTestTable 
INSTEAD OF INSERT 
AS 
BEGIN 
IF inserted.fieldID >= 4 AND inserted.fieldID <=9 

INSERT INTO myFieldTable(state, process, fieldID) 
select state, process, fieldID 
from inserted; 
END; 
GO 
+0

감사합니다. 하지만 "삽입 된"것을 어떻게 참조하고 있습니까? –

+0

@WillWhitehead, 좋은 질문입니다. 왜 읽고 MSDN 문서를 사용하여 동일한 이해합니다. http://technet.microsoft.com/en-us/library/ms179288%28v=sql.105%29.aspx – Rahul

+0

@WillWhitehead,'inserted'는 중개자 테이블이므로 데이터가 먼저 해당 테이블에 삽입됩니다. 그것은 실제 테이블로가는 길입니다. 이 테이블에서 직접 데이터를 참조하고 이에 대한 유효성 검증/조작을 수행 할 수 있습니다. – Rahul