2013-09-27 97 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; 
相关问题