2013-08-27 3 views
0

삽입이 내 테이블에서 일어날 때 필드를 변환하고 싶습니다.업데이트를위한 mysql 트리거가 작동하지 않습니다.

check & ged 's => 확인 및 geds.

DELIMITER $$ 
CREATE TRIGGER `perma_limk_insertion` AFTER INSERT 
ON `tbl_magazine_subscription` 
FOR EACH ROW BEGIN 

    DECLARE magazine_name VARCHAR(100); 
    DECLARE magazine_name_from_table VARCHAR(100); 
    DECLARE magazine_name_new VARCHAR(100); 
    SET @magazine_name_from_table := (SELECT MAGAZINE_NAME FROM tbl_magazine WHERE MAGAZINE_ID = NEW.magazine_id LIMIT 1); 
    SET @magazine_name   := REPLACE(@magazine_name_from_table,'&','and'); 
    SET @magazine_name_new  := REPLACE(@magazine_name,"'",''); 
    UPDATE tbl_magazine SET perma_link = @magazine_name_new WHERE MAGAZINE_ID = NEW.magazine_id; 
END$$ 
DELIMITER ; 

만 쿼리 이상 사용 그들은 업데이트되지 않았습니다. 어떤 질문이라도 잘못 되었다면

이 사람에 대해 알고 있으면 알려주세요.

+0

모든 업데이트를 더 aboue 세션 변수와 지역 변수를 알아? .. – beck03076

답변

0

시도해보십시오. "@"이 모든 곳에서 삭제되었습니다.을 사용하고 을 사용하려는 경우 INTO을 사용하여 테이블에서 변수로 값을 선택하십시오.

DELIMITER $$ 
     CREATE TRIGGER perma_limk_insertion AFTER INSERT ON tbl_magazine_subscription FOR EACH ROW BEGIN 

      DECLARE magazine_name VARCHAR(100); 
      DECLARE magazine_name_from_table VARCHAR(100); 
      DECLARE magazine_name_new VARCHAR(100); 

    //changed from SET to INTO here 
    SELECT MAGAZINE_NAME INTO magazine_name_from_table FROM tbl_magazine 
    WHERE MAGAZINE_ID = NEW.magazine_id LIMIT 1; 

      SET magazine_name   := REPLACE(magazine_name_from_table,'&','and'); 
      SET magazine_name_new  := REPLACE(magazine_name,"'",''); 
      UPDATE tbl_magazine SET perma_link = magazine_name_new WHERE MAGAZINE_ID = NEW.magazine_id; 
     END$$ 

    DELIMITER ; 

는 ..., 여기에 따라,

MySQL: @variable vs. variable. Whats the difference?

관련 문제