내 질문은 주로 "성능에 가장 좋은 것"과 관련이 있지만 다소 "철학적으로"말하기도합니다 (차이가 나는 경우) ... 그래서 점프합시다SQL Server - 삽입 트리거 대 분당 작업
[표 A]. [ColumnB]는 [TableC]. [ColumnD]에 존재해야하는 값을 저장합니다. 방망이에서 벗어난 외래 키과 관련된 답변이 없습니다. 어떤 이유로 든이 환경에서 "허용되지 않는"것으로 가정합니다.
[상황 x, y, z]로 인해 [TableA]. [TableB]는 [TableC]. [ColumnD]에 존재하지 않는 값을 가져 오는 경우가 있습니다. "직렬화 된 BLOB"로 실행 코드에 존재하는 객체, 데이터의 메모리 내 표현 및 [ColumnB] 값이 [TableC]. [ColumnD]에서 다른 프로세스에 의해 삭제되기 전에 채워집니다. 어쨌든, 이것은 예를 든 것입니다. 그래서 "왜 이런 일이 생깁니 까?"라는 말에 매료되어서는 안된다.
문제를 "수정"하려면이 두 가지 방법 중 가장 좋은 방법은 다음과 같습니다. 1. [TableA]에서 INSERT 할 때 발생시키는 트리거를 만들고 [ColumnB]를 값으로 업데이트합니다. bad-to-good 값의 "매핑"을 가짐). 또는 2. 매시간마다/분당/예정된 작업을 실행하여 업데이트 쿼리를 실행하여 가능한 모든 "나쁜"값을 해당 "양호한"값으로 변경합니다.
더 일반적으로 말하자면 성능 및/또는 모범 사례 : 트리거 또는 정기적 인 예약 된 작업으로 무엇이 더 좋습니까? 문맥 상, [TableA]가 일반적으로 수십만 줄의 순서로 있다고 가정 해 봅시다. 삽입물은 한 번에 10-100 개의 레코드가 발생하며, 몇 분 간격으로 자주 하루에 몇 번씩 발생합니다.
감사합니다. 모두들! 방아쇠를 당긴다 ... 나는 20 + 다른 DBs에 하나 창조에 관하여 흥분하지 않는다, 그러나, 그런 것은 생활이다. – NateJ