2013-09-27 2 views
1

타사 응용 프로그램에서 데이터베이스를 업데이트하려고합니다. 영향을받는 두 테이블의 스키마는 다음과 같습니다.오류 1442 : 저장된 함수/트리거의 테이블을 업데이트 할 수 없습니다.

Table 'camera' 
columns: deviceID, connectionState 

Table 'cameraRecording' 
columns: deviceID, recordToVolumeID 

위 쿼리를 모두 시도했지만 동일한 오류가 발생합니다.

mysql> update cameraRecording 
     SET recordToVolumeID='STRING' 
     WHERE deviceID 
     IN (select deviceID from camera WHERE connectionState=1); 

ERROR 1442 (HY000): Can't update table 'camera' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

.

mysql> update cameraRecording a 
     JOIN camera b 
     ON a.deviceID=b.deviceID AND b.connectionState=1 
     SET recordToVolumeID='STRING'; 

ERROR 1442 (HY000): Can't update table 'camera' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 

저는 SQL 전문가가 아니며 자주 사용하지 않지만이 방법이 효과적 일 것이라고 확신합니다. 응용 프로그램이 트리거 또는 함수를 이미 설정 한 것 같아요 ...이 작업을 수행 할 수있는 방법이 있습니까? 나는 다른 사람들의 많은 게시물을이 오류로 읽었지만, 대부분은 그들에게 방아쇠를 만들려고 애썼다.

+1

http://stackoverflow.com/questions/1582683/mysql-trigger-stored-trigger-is-already-used-by-statement-which-invoked-stored-t?rq=1 – Mihai

답변

2

변수를 선언 한 다음 값을 사용할 수 있습니까?

DECLARE @id int; 
SELECT @id = deviceID from camera WHERE connectionState=1; 

update cameraRecording 
SET recordToVolumeID='STRING' 
WHERE deviceID = @id; 
관련 문제