2013-10-01 2 views
1

supplyequipment이라는 두 개의 테이블이 있습니다. IAR_NOmysql에서 단일 쿼리로 두 테이블을 업데이트하십시오.

지금, 내가 원하는 것은 하나의 쿼리, 그 IAR_NO에 0이 두 테이블의 모든 레코드를 사용하여 업데이트하는 것입니다 :이 두 테이블라는 공통 필드가 있습니다.

가장 적합한 검색어는 무엇입니까?

내가 현재 사용하고 있지만, 이들은 (업데이트를 위해) 서로에 의존하지 않는 두 개의 업데이트가

update supply, equipment 
set supply.IAR_NO = "9", equipment.IAR_NO= "9 " 
where equipment.IAR_NO = 0 and supply.IAR_NO = 0 
+0

두 개의 쿼리에서 수행 할 수 있지만 트랜잭션을 사용할 수 없습니까? –

+0

트랜잭션에서 두 테이블을 개별적으로 업데이트해야합니다. – Ashok

+0

단일 쿼리에서 테이블의 키를 업데이트 할 수 없으며 두 개의 분리 된 쿼리로 수행해야합니다. – Sal00m

답변

6

설명서에 설명 된대로 다중 테이블 업데이트가 가능해야합니다.

http://dev.mysql.com/doc/refman/5.5/en/update.html

UPDATE supply a INNER JOIN equipment b ON (a.IAR_NO= b.IAR_NO) 
SET a.IAR_NO = "9" , b.IAR_NO = "9" 
WHERE equipment.IAR_NO = 0 and supply.IAR_NO = 0; 

참고 :

당신이 동일한 데이터를 가진 두 개의 테이블을 업데이트하는 경우, 아마 당신의 데이터베이스를 설계 할 수있는 더 좋은 방법이있다. 프로그래밍을 계속 기억하십시오 DRY.

4

작동하지 않습니다. 그들이 함께 수행해야하는 경우, 트랜잭션

START TRANSACTION; 
UPDATE supply SET IAR_NO = 9 WHERE IAR_NO = 0; 
UPDATE equipment SET IAR_NO = 9 WHERE IAR_NO = 0; 
COMMIT; 

더 명시 적있어이 방식으로 할, 당신은 어떤 값에 실제로 업데이트되는 것을 볼 수 있기 때문에 나는 더 우아한 말할 것입니다.

+0

위와 PHP를 사용하는 경우 mysqli_multi_query도 살펴보아야한다. – MarcoZen

관련 문제