2010-06-10 4 views

답변

5

INSTEAD OF 트리거가 일반 트리거와 공존 할 수 있습니다. 나는 이것을 잘했다.

INSTEAD OF 트리거는 잠재적 인 문제가 많습니다. 주로 삽입/업데이트/삭제 동작을 사용자가 정의한 것으로 대체합니다. 개발자는 UPDATE User SET Address = 'foo' WHERE UserID = 4을 생각하지 않을 수 있습니다. 그러나 방아쇠를 사용하여 수십 개의 인증 테이블을 터치하고 전 세계의 서버와 대화 할 수 있다면 잠재적 인 혼란을 많이 겪게됩니다.

예상되는 IUD 문의 동작과 함께 이러한 트리거의 동작을 유지하십시오. 너무 많이하지 마라.

INSTEAD OF 트리거는 매우 강력한 도구이며 쉽게 오용됩니다. 적절하고 신중하게 사용하십시오.

+0

당신이 무엇을 하든지, multipe 레코드가 배치에 추가/업데이트/삭제되는 경우 작동하지 말아야합니다. 이것은 데이터가 획득 될 때 트리거 대신에 더 중요합니다. 실제로 들어가면 (예 : 가격 인상과 같은) 1,000 개의 레코드를 일괄 적으로 업데이트 할 수 있으며 업데이트의 insted는 하나의 레코드 만 처리하도록 작성됩니다. 가능하면 하나만 업데이트됩니다. 이렇게하면 데이터 무결성이 크게 높아질 수 있습니다. – HLGEM

1

나는 INSTEAD OFAFTER (AKA FOR) 트리거를 동시에 사용하는 것과 관련하여 걱정할 사항을 발견하지 못했습니다. INSTEAD OF 트리거와 주요 문제는 다음과 같습니다

  • 에만 테이블 당 작업 당 하나의 INSTEAD OF 트리거를 가질 수 있습니다;
  • 그들은 OUTPUT INTO 절과 혼동 될 수 있습니다 (즉, 신원 값이 0이 됨).
  • 테이블에 스키마를 변경하면 트리거를 유지하지 않도록 조심하지 않으면 나중에 어느 시점에서 이상하게 작동하지 않을 수 있습니다.

이러한 경고는 모두 AFTER 트리거와 관련이 없으므로 걱정할 사항이 없습니다. 테이블 조작과 간섭 할 가능성이 적으므로 테이블과 대조적으로 뷰에 INSTEAD OF 트리거를 쓰는 것이 더 일반적이라고 말하지만 이들은 기본적으로 삽입 가능/업데이트 가능보기를 만드는 데 도움이되는 도구로 설계되었습니다. 당신이 조심 있다면

어쨌든, 당신은 괜찮을거야,하지만 그들은에 대한 이유에 열심히 일반적으로 간단한 작업을하기 때문에 나는 여전히 당신이 실제로 을 필요로하지 않는 한 INSTEAD OF 트리거를 사용에 대해 추천 할 것입니다.

관련 문제