2012-08-28 5 views
0

문제 실행하는 트리거가있는 경우 트리거를 무시하는 방법 : 나는 테이블이 삽입 될 때 트리거를 작성하려는여전히

, 나는 체크를하고 특정 사용자에게 이메일을 보내해야합니다. 이를 위해 다른 값을 삽입 할 트리거를 사용하려고합니다. QUEUE 테이블. 그런 다음 QUEUE 테이블에있는 트리거는 전자 메일 수 x 개를 가져 와서 보내고 모든 레코드가 완료 될 때까지 반복합니다. 따라서 트리거가 호출되면 트리거가 작동하는 동안 QUEUE 테이블에 삽입 할 수 있습니다. 따라서 트리거는 대기하고 매번 QUEUE 테이블에 삽입되고 현재 실행중인 트리거가 완료된 후에 트리거됩니다.

질문 :

내 접근이 올바른지입니다. 더 나은 방법이 있다면 어떤 사람이 나를 도울 수 있습니다. 방아쇠가 반복해서 발사되는 경우 디자인 문제입니까? 실행중인 트리거가있는 동안 트리거를 무시하는 방법이 있습니까? 여기 제안입니다 수있는 일

+0

[Sql Server Service Broker] (http://msdn.microsoft.com/en-us/library/bb522893%28v=sql.105%29.aspx)를 배우는 데 많은 돈을 벌 수 있습니다. 트리거는 네이티브 큐를 사용하여 메일을 대기시키고 예약 된 저장 프로시 저는 메시지를 읽고 메일을 보냅니다. –

답변

1

,

1.Create 새로운 레코드가 기본 테이블에 삽입 whenver 같은 기본 테이블에 트리거

가, 다른 테이블 (QUEUE 테이블)에 레코드를 삽입.

2. 이제 큐 테이블에서 최상위 X 행을 선택하고 전자 메일을 보내는 sproc을 만듭니다.

3. 위의 sproc를 주기적으로 실행하는 SQL 작업을 작성하십시오.

4. 귀하는 이메일을 보낸 후 QUEUE 테이블에서 해당 레코드를 삭제하거나 그와 함께 처리 할 수 ​​있습니다.

+0

좋아, 나는 SQL 클라이언트 작업에 대해 고려했습니다. 그러나 나는이 이메일을 보내는 것이 저장된 프로 시저가 주기적으로 호출 될 것이라고 생각했다. 하지만 의도 한대로 달리 수행 할 수 있으면 테이블에 삽입 된 모든 레코드가 완료된 후 저장 프로 시저가 중지됩니다. –

+0

예. 레코드가있을 때마다 다시 시작됩니다. – AnandPhadke

+0

네, 답변에 대한 귀하의 의견은 –