2017-11-07 7 views
0

이벤트 후 @mess를 선택하려고했는데 (impiegato ...로 삽입) 트리거를 실행 한 후에도 변수의 값은 항상 null입니다. 어떻게 문제를 해결할 수 있습니까?트리거 (mysql)에서 선언 된 변수는 어떻게 선택합니까?

`DELIMITER // 
CREATE TRIGGER NomeNoCognome 
BEFORE INSERT ON impiegato FOR EACH ROW 
BEGIN 
IF new.Nome IN (SELECT Cognome FROM impiegato) OR new.Nome=new.Cognome 
THEN SET @mess='Non è possibile inserire un nome uguale ad un cognome della tabella!'; 
SET new.Nome=null; 
END IF; 
END; 
//` 

답변

0

대신 SIGNAL을 사용해야합니다.

SIGNAL은 오류를 "반환하는"방법입니다. SIGNAL은 핸들러, 응용 프로그램의 외부 부분 또는 클라이언트에 오류 정보를 제공합니다. 또한 오류의 특성 (오류 번호, SQLSTATE 값, 메시지)을 제어 할 수 있습니다. SIGNAL이 없으면 루틴이 오류를 리턴하도록 존재하지 않는 테이블을 의도적으로 참조하는 등의 일시적인 해결책을 사용해야합니다.

링크 된 매뉴얼 페이지에는 많은 예제가 있습니다.

+0

고맙습니다. 고쳐졌습니다. –