본문 바로가기
MySql

MySQL MySql에서 트리거를 만드는 동안 변수 선언

by 베이스 공부 2020. 12. 18.
반응형

트리거를 만드는 데 약간의 문제가 있습니다. 몇 가지 변수를 선언 한 다음 일부 변수를 0으로 설정해야 조건에 따라 루프에서 값이 증가하기 시작하기 때문입니다. 어쨌든, 나는 코드와 그것이 던지는 오류를 붙여 넣을 것입니다. 누군가 내가 뭘 잘못하고 있는지 말해 줄 것입니다. 감사.

CREATE TRIGGER update_request AFTER UPDATE ON medical_tests
FOR EACH ROW
BEGIN
DECLARE y INT, x0 INT, x3 INT, counting INT
SET y=0, x0=0, x3=0,
counting = count(SELECT * FROM medical_tests WHERE medical_tests.request_id = UPDATED.request_id)

WHILE (y<counting)
BEGIN
SET y=y+1
IF (medical_tests.status=1)
BEGIN
SET x0=x0+1
END
ELSEIF (medical_tests.status=3)
BEGIN
SET x3=x3+1
END
END IF
END WHILE

IF (x0>0 AND x0<counting)
BEGIN
UPDATE requests SET status=2 WHERE requests.id=UPDATED.request_id
END
ELSEIF (x3=counting)
BEGIN
UPDATE requests SET status=3 WHERE requests.id=UPDATED.request_id
END
ENDIF
END

다음 오류가 발생합니다. # 1064-SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'x0 INT, x3 INT, counting INT SET y = 0, x0 = 0, x3 = 0, counting = count (SELECT * FROM m'at line 삼.

지난번에 트리거를 작성했을 때 MySQL 서버에서 수행했으며 구문이 약간 다릅니다. 프로 시저를 만들고 대신 호출해야 할 수도 있습니다. 그래서 누구든지 도울 수 있다면 감사하겠습니다.

 

해결 방법

 


DECLARE y INT, x0 INT, x3 INT, counting INT

DECLARE y, x0, x3, counting INT DEFAULT 0;

이것은 기본값이 0 INT 유형의 4 개의 변수를 선언합니다.

그러나 그것은 시작에 불과합니다. 코드에는 몇 가지 다른 문제가 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/19885752

 

 

반응형

댓글