2014-06-10 1 views
0

다음은 내게 큰 도움이됩니다. 제발 도와주세요! UPDATE 문 (T-SQL, SQL 서버 2012) 실행하기 전에 체크로 T-SQL UPDATE 문이 선택 문보다 많은 레코드에 영향을줍니다.

내가 도망을 :

select * 
from Treatment_Day42 
where td42pinit = 'J M' and td42pid = 'ADA'; 

내가 예상대로 내가, 1 개 행을 반환받을.

update Treatment_Day42 set td42pid = 'ADA252' 
where td42pinit = 'J M' and td42pid = 'ADA'; 

을 실행 그러나

는 WHERE 절 동일한하지 하나의 SELECT 문에 4 개 개의 기록을 영향을줍니다. 나는 선택 플러스 3 개의 다른 행에 의해 반환 된 행을 얻습니다. 여기서 td42pid = ADA458, ADA671 및 ADA658입니다.

왜 UPDATE가 의도 한 것보다 많은 행에 영향을 줍니까?

감사합니다.

클레멘스

+0

인가? – xQbert

답변

0

테이블의 트리거가이 작업을 수행 할 수 있습니다. 기존 방아쇠를 확인 했습니까?

+0

감사! 이 테이블에서 트리거를 비활성화하면 내 문제가 해결됩니다. – user3726118

0

트리거가 아닌 경우 업데이트 캐스케이드에있을 수도 있습니다. 그러나 이것은 트리거보다 일반적이지 않으므로 먼저 트리거를 확인합니다. 업데이트하지 않는 테이블과 열을 체크 아웃하십시오.

0

더 많은 행에 영향을주는 트리거가 테이블에 있어야합니다. 당신은 sp_helptrigger에 추가 옵션을 보려면

EXEC sp_helptrigger 'tablename'; 

을 사용하여 테이블에 트리거를 확인하실 수 있습니다, 당신은 내가 같은 문제에 직면 한 MSDN 링크 아래

http://msdn.microsoft.com/en-us/library/ms189836.aspx

+0

예, 해당 테이블 및 다른 테이블에 대한 트리거를 사용하여 테이블 변경을 감사합니다. 트리거를 제거하여 내 UPDATE 스크립트가 작동하는 것은 이상하게 보입니다. 내 트리거에 따라 변경 사항이 감사 추적에 기록되지 않기 때문입니다. 트리거가이 동작을 일으키는 이유는 무엇입니까? 이 상황을 일으키지 않도록 어떻게 쓸 수 있습니까? 감사 – user3726118

0

를 방문 할 수 있습니다, 그리고 나는 확인 나는 TRIGGERmyTable에 구현했습니다. 당신이 당신의 table 여부에 어떤 트리거를 가진 경우

확인하려면, 단지 그것을 시도 : 그것은 테이블이나보기로 업데이트

EXEC sp_helptrigger yourTableName; 
관련 문제