3
좋아, 그래서 내가 일하고있어, 그리고 그것은 (MySQL의 워크 벤치 5.2)이 변수를 인식하지 못한다고 말해.
* 오류 코드 : 1193. 알 수없는 시스템 변수 error_msg_3 * 나는 그것이 트리거를 사용하여 올바른있을 거라고 생각MySQL의 오류 코드 : 1193. 알 수없는 시스템 변수
, 나에게
CREATE TRIGGER controlla_MaxCARDINALITA_INSERT
BEFORE INSERT ON SENTIERO__HA__TAPPA
FOR EACH ROW
BEGIN
DECLARE max_cardinalita INTEGER;
DECLARE error_msg_3 CONDITION FOR SQLSTATE '99003';
SELECT COUNT(*) into max_cardinalita
FROM SENTIERO__HA__TAPPA
WHERE IDsentiero=NEW.IDsentiero;
IF max_cardinalita>=10 THEN
SIGNAL error_msg_3;
SET error_msg_3='INSERT: Il sentiero ha già il massimo numero di tappe consentito';
END IF;
END$$
편집 :
도와주세요 나는 이것을 시도하고 작동하는 것 같다.
DECLARE msg VARCHAR(255);
set msg = concat('MyTriggerError: Trying to insert a negative value in trigger_test: ');
signal sqlstate '45000' set message_text = msg;
내 편집을 참조하십시오. 왜 코드가 작동합니까? 테이블에 45000이 없다고 생각합니다. – FrancescoN
@ Jimmy5nomana 다시 한 번 ['SIGNAL'] (http://dev.mysql.com/doc/refman/5.5/en/signal. html) 절. 명확하게 언급 : ** 신호는 오류를 "반환"하는 방법입니다. SIGNAL은 핸들러, 응용 프로그램의 외부 부분 또는 클라이언트에 오류 정보를 제공합니다. 일반적인 SQLSTATE 값을 표시하려면 '45000'을 사용하십시오. 즉, 처리되지 않은 사용자 정의 예외 _를 나타냅니다. ** – hjpotter92
마지막 질문입니다. mysql을 사용하면 동일한 이벤트와 작업 시간에 여러 테이블을 사용할 수 없습니다. .. 그래서 나는 기능과 절차에 대해 들었다. 그들에게 해결책이 있습니까? 나는 그것을 가장 쉬운 방법으로 해결하고 싶습니다. 나는 서둘러 있습니다. 감사합니다 – FrancescoN