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
'code' 카테고리의 다른 글
유니언 유형을 유형 스크립트에서 열거형으로 변환하는 방법은 무엇입니까? (0) | 2023.06.07 |
---|---|
유형 스크립트에서 최소/최대 길이의 문자열 유형 선언 (0) | 2023.06.07 |
Oracle PL/SQL에서 숫자 배열을 선택하는 방법은 무엇입니까? (0) | 2023.06.07 |
Firebase 클라우드 기능: onRequest와 onCall의 차이 (0) | 2023.06.07 |
forwardRef: 속성 'ref'가 'IntrinsicAttributes' 유형에 있는 일반 오류가 없습니다. (0) | 2023.06.07 |