2010-08-18 5 views
2

내 응용 프로그램의 일부 작업을 기록하려는 테이블이 있습니다. 다른 테이블에 레코드가 삽입/업데이트 될 때이 테이블에서 레코드가 삽입됩니다 (장래에 업데이트 될 수 있음).데이터베이스 트리거 또는 코드의 일반적인 방법은 무엇입니까?

예. 레코드가 Orders 테이블 삽입되어있는 경우

  • 항목은 로그인 테이블에 삽입됩니다.
  • 예약 번호 테이블에 레코드가 삽입 된 경우 엔트리가 로그 테이블에 삽입됩니다.
  • 고객이 테이블에 레코드가 업데이트 된 경우 로그 테이블에 이 고객의 항목이없는 경우 로그 테이블이 삽입됩니다.

내가 로그 테이블에 레코드를 추가하기 위해이 테이블에 트리거를 사용해야하거나 내 코드에서 일반적인 방법이 있어야합니다 및 삽입/업데이트 작업이 발생할 때마다 그 메소드를 호출?

내 응용 프로그램의 일부에서이 작업을 수행해야하므로 트리거를 추가 할 테이블이 20 개 이상이거나 메서드를 호출 할 다른 위치에서 몇 개의 테이블이있을 수 있습니다.

내가 SQL Server 2005 및 C#

무엇이 더 나은, 트리거 또는 방법을 사용하고

?

+0

을 유지하는 방법은 코드를 최적화하고, 논리를 확장하고 쉽게의 관점에서 당신에게 많은 장점을 줄 것이다

로그 테이블에 전달되는 질문을 편집하십시오. – Kashif

답변

1

는 쿼리 Ananlyzer 등 절반, 트리거가

2

이것은 중요한 작업으로 RDBMS 내부에서 트리거를 사용하여 응용 프로그램이 로그를 생성하지 않도록합니다. 경우 누군가에

+0

이것은 현재 중요하지 않겠지 만 앞으로는 더 중요해질 수 있습니다. 클라이언트가 DB를 직접 조작하지 못하도록 방지하고 코드의 일부분을 잊어 버린 경우에도이를 보호합니다. – Paddy

4

방법은 트리거보다 더 나은 옵션이 더 좋을 것이다 두꺼비, SSMS를 사용하여 응용 프로그램없이 데이터베이스를 업데이트 할 수있는 기능을 가지고있다. 트리거는 일반적으로 - 성능이 뛰어납니다. - 코드에서 눈에 잘 띄지 않습니다. 즉, 숨겨져 있습니다. - 디버그하기가 더 어려움 & 유지 관리. - 값에 대한 제한은 사람이 더 나은 태그를 생각하면

+0

+1 : "공통"인 경우이 문제를 처리하기위한 몇 가지 OO 기술이 있습니다. 상속과 위임은 이것을 응용 프로그램의 공통 부분으로 만드는 중요한 방법입니다. 또한 일부 언어에서는이 공통 기능을 관련 클래스에 적용하기 쉽게 만들기 위해 "데코레이터"와 같은 "Aspect-Oriented Programming"기술을 사용합니다. –

관련 문제