code

MariaDB 이름 길이 가져오기 오류 트리거

starcafe 2023. 6. 7. 23:03
반응형

MariaDB 이름 길이 가져오기 오류 트리거

라이브러리 테이블에 있는 이름의 길이가 허용되는 길이인지 확인하려고 합니다.이것은 나의 방아쇠인데 나에게 오류가 납니다.저는 membership이라는 표를 가지고 있는데, 그 표에는 membership을 가진 각 사람의 이름을 나타내는 name이라는 열이 있습니다.

어떤 도움이라도 주시면 대단히 감사하겠습니다!

이게 내 방아쇠야

BEGIN
DECLARE msg varchar(100);
FOR EACH ROW BEGIN
IF len(membership.name) NOT between 4 and 20 THEN
set msg ='Name should be between 5 and 20 letters'; 
SET MESSAGE_TEXT = msg;
END IF;
END

다음과 같은 오류가 발생합니다.

다음 쿼리가 실패했습니다. "각 행에 대해 "membership"에 삽입하기 전에 트리거 'Student_Name'을 생성하십시오. 메시지 varchar(100)를 선언하십시오. 각 행에 대해 4~20자가 아닌 len(membership.name )을 시작한 다음, msg ='Name'을 5~20자 사이로 설정해야 합니다."SET MESSAGE_TEXT =msg; END"

MySQL에서 말하기를: #1064 - SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'EACH ROW BEGIN IFlen(membership.name )' 근처에서 사용할 구문이 올바른지 확인한 후 3행에서 msg =...를 설정하십시오.

CREATE 트리거 구문 검토: https://mariadb.com/kb/en/create-trigger/

각 행에 대해 트리거 본문 앞에 한 번만 사용해야 합니다.

또한 각 행에 대해 선언 행 다음에 두 번째로 사용했습니다.그거 빼요.

CREATE TRIGGER Student_Name BEFORE INSERT ON membership
FOR EACH ROW
BEGIN
 DECLARE msg varchar(100);
 FOR EACH ROW BEGIN <---- remove this line
 IF LENGTH(NEW.name) NOT between 4 and 20 THEN
  SET msg ='Name should be between 5 and 20 letters'; 
  SIGNAL SQLSTATE '45000' 
  SET MESSAGE_TEXT = msg;
 END IF;
END

다른 문제들도 있습니다.

다음 행:

 IF len(membership.name) NOT between 4 and 20 THEN

LEN() 기능이 없습니다.LENGTH()를 참조하십시오.

만약 당신이 그 값을 참조하십시오.name삽입할 새 행의 열, 사용NEW.name.

열을 참조하려면name삽입된 새 행의 사용NEW.name,것은 아니다.membership.name.

규칙과 충돌할 경우 MESSAGE_TEXT를 사용하여 삽입을 중단할 수도 있습니다.당신은 아마도 SIGNAL을 사용하려고 했을 것입니다.

언급URL : https://stackoverflow.com/questions/69996429/mariadb-triggers-error-for-getting-length-of-name

반응형