2012-12-04 2 views
0

나는 두 개의 테이블 이름 : registeredList & deregisteredlist 있습니다. 이제 사용자가 "등록 된 목록"테이블에서 등록 해제 될 때 트리거가 등록 정보를 등록 해제 테이블로 업데이트하고 등록 테이블에서 레코드를 삭제합니다. 내 아래에 proc 제대로 업데이트 할 수 있지만 등록 된 테이블에서 사용자를 삭제할 수 없습니다. 내 proc :MYSQL 저장된 프로 시저 : 방금 업데이트 된 레코드를 삭제하는 방법

DELIMITER $$ 
USE `abc_db`$$ 
DROP TRIGGER `UnsubscriberListTrigger`$$ 
CREATE   
    TRIGGER `UnsubscriberListTrigger` AFTER UPDATE ON `registeredlist` FOR EACH ROW 
    BEGIN   
    IF (old.SubscriberStatus='registered') THEN  
     INSERT INTO deregisteredlist(name,SubscriberStatus,DeRegistrationDate) 
     VALUES(old.name,'Deregistered',NOW()); 

     DELETE from registeredlist where old.id=new.id;/???????/I am getting problem here   
    END IF; 
END $$ 
DELIMITER ; 

미리 감사드립니다.

답변

2

을 나는 당신이 필요로하는 모든 DELETE 성명에서 WHERE을 변경하는 것입니다 생각합니다. 이 같이 가야한다 :

DELETE from registeredlist where id=old.id; // (or new.id cause in this case old.id is equal to new.id) 

을 ... 당신이 id 열에 대해 그것을 일치시킬 때문이다.

UPDATE :

또 다른 가능성이있다 : - (가) registeredlist에서 삭제 할 것 deregisteredlist에 INSERT 트리거 이후에 ​​만들 수 있습니다. 그렇게하면 오류가 발생하지 않아야합니다.

+0

감사합니다. 나는 그것을 사용하지만 등록 된 테이블을 업데이트 할 때 에러가 발생한다 : ERROR : 저장된 함수/트리거에서 '등록 된 테이블'테이블을 업데이트 할 수 없다. 이미이 저장된 함수/트리거를 호출 한 문에 의해 사용되기 때문이다. – riad

+0

내 답변이 업데이트되었습니다. 제대로 작동하는지 확인하십시오. – Zagor23

0

이 시도 ::

DELETE from registeredlist order by updateddat desc limit 1; 
관련 문제