>

이벤트 후에 (impiegato에 삽입 ...) 트리거가 실행 된 후에 @mess를 선택하려고했지만 변수 값은 항상 null입니다. 문제를 어떻게 해결할 수 있습니까?

`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;
 //`

  • 답변 # 1

    SIGNAL 를 사용해야합니다  대신

    와이즈 비즈

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

    SIGNAL is the way to “return” an error. SIGNAL provides error information to a handler, to an outer portion of the application, or to the client. Also, it provides control over the error's characteristics (error number, SQLSTATE value, message). Without SIGNAL, it is necessary to resort to workarounds such as deliberately referring to a nonexistent table to cause a routine to return an error.

관련 자료

  • 이전 c++ - 파호 cpp - 정적 실행 파일로 컴파일
  • 다음 r - 모든 확인란 입력을 선택하지 않은 경우 반응하는 방법은 무엇입니까?