2013-10-09 3 views
-2

이상한 문제가 있습니다.MySQL - 하위 쿼리가 1 행 이상을 반환합니다 (이상한 것)

테이블의 레코드를 업데이트하려고합니다. 기본 키 (Unique 및 Not null)를 사용하여 업데이트 중입니다.

UPDATE `rxMaster` SET `Name`='Ac Electri' WHERE `rxMasterID`=13493; 

다음과 같은 오류가 : 여기

쿼리입니다 내가 확신

ERROR 1242: 1242: Subquery returns more than 1 row 
SQL Statement: 
UPDATE `rxMaster` SET `Name`='Ac Electri' WHERE `rxMasterID`=13493; 

, 나는 ID '13493'와 데이터베이스에 하나의 레코드 만 있습니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다.

내가 무엇인지 놓치면 고쳐주세요.

참고 : 새 레코드를 만들고 그 레코드를 업데이트해도 문제가없는 경우입니다. 그러나 오래된 레코드를 업데이트하려고하면이 레코드를 얻습니다.

는 트리거 :ON UPDATE 트리거 것으로 보인다

-- trigger for drop and update a record in rxMaster table, affected in search_text table. -- 
DELIMITER $$ 
DROP TRIGGER IF EXISTS `tr_upd_rolodexSearch`$$ 

CREATE TRIGGER `tr_upd_rolodexSearch` AFTER UPDATE on `rxMaster` 
    FOR EACH ROW 
     BEGIN 
      CALL sp_rolodex_upd_searchindex(NEW.rxMasterID, NEW.Name, NEW.SearchName, NEW.Phone1); 
     END$$ 
DELIMITER ; 
+5

여기에는 하위 쿼리가 없습니다. 여러 행을 업데이트해도 문제가 없습니다. –

+0

왜 이것이 하위 쿼리입니까? –

+0

'rxMaster'에서'SELECT * '를 적용하여 쿼리를 다시 확인하십시오 WHERE'rxMasterID' = 13493; – sarwar026

답변

1

는 1 개 이상의 결과를 반환하는 하위 쿼리를 가지고 있으며, 그것은 안된다.

트리거에서 쿼리를 살펴보고 실행하여 중복 된 결과를 확인해야합니다.

그런 다음 트리거를 수정하거나 테이블에 실제로 중복 항목이 있는지 확인한 다음 중복 항목이없는 경우에만 제거하십시오.

+0

죄송합니다, 실수로 'Insert'트리거가 끊어졌습니다. 이제 업데이트 트리거를 삭제하고 잘 작동합니다. 업데이트 트리거를 수정합니다. 감사합니다 v 너의 도움을 많이 받자. – vissu

관련 문제