Ho un trigger che deve segnalare, sollevare un'eccezione se non si verifica un evento.
Il trigger è un merge di 2 trigger perchè su MySQL "can't use multiple triggers for the same action time and event on one table"

Error Code: 1648. Data too long for condition item 'MESSAGE_TEXT'

Non badate al corpo del trigger, guardate la variabile msg e la parte dove viene segnalato l'errore con signal

Ho provato anche un'altra variante, ma mi dà sempre lo stesso errore

VARIANTE
Codice PHP:
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT 'INSERT: Il sentiero ha già il massimo numero di tappe consentito'MYSQL_ERRNO 1001
TRIGGER
Codice PHP:
-- ----------------------------------------------------------------------------------------------
CREATE TRIGGER BEFORE_INSERT_ON_SENTIERO__HA__TAPPA
BEFORE INSERT ON SENTIERO__HA__TAPPA
FOR EACH ROW 
BEGIN

/* TRIGGER controlla_MaxCARDINALITA_INSERT */

-- variables for controlla_MaxCARDINALITA_INSERT
DECLARE max_cardinalita INTEGER;
DECLARE 
msg varchar(255);

-- 
variables for controlla_corrispondenzaTappaFineInizio_INSERT
DECLARE temp_tappaOLD INTEGER;
DECLARE 
temp_posizione_tappaOLD INTEGER;
DECLARE 
temp_inizio_tappaNEW VARCHAR(45);
DECLARE 
temp_fine_tappaOLD VARCHAR(45);


SELECT COUNT(*) into max_cardinalita
FROM SENTIERO__HA__TAPPA
WHERE IDsentiero
=NEW.IDsentiero;

IF 
max_cardinalita>=10 THEN

        set msg 
'INSERT: Il sentiero ha già il massimo numero di tappe consentito ';
        
signal sqlstate '45000' set message_text msg;

END IF;



/* TRIGGER controlla_corrispondenzaTappaFineInizio_INSERT */

IF EXISTS SELECT IDsentieroIDtappa
            FROM SENTIERO__HA__TAPPA 
as sht
            WHERE 
NEW.IDsentiero=sht.IDsentiero and NEW.IDtappa=sht.IDtappaTHEN

            set msg 
'INSERT: La tappa inserita è già presente nel sentiero; non è possibile inserirla 2 volte ';
            
signal sqlstate '45000' set message_text msg;

END IF;

SELECT IDtappa into temp_tappaOLD
FROM SENTIERO__HA__TAPPA 
as sht1
WHERE 
NEW.IDsentiero=sht1.IDsentiero and posizione_tappa>=ALL SELECT posizione_tappa
                                                                FROM SENTIERO__HA__TAPPA 
as sht2
                                                                WHERE 
NEW.IDsentiero=sht2.IDsentiero );

SELECT posizione_tappa into temp_posizione_tappaOLD
FROM SENTIERO__HA__TAPPA 
as sht
WHERE 
NEW.IDsentiero=sht.IDsentiero and temp_tappaOLD=sht.IDtappa;

IF NEW.
posizione_tappa<>temp_posizione_tappaOLD THEN

        set msg 
'INSERT: La posizione della tappa inserita deve essere consecutiva alla posizione dell ultima tappa di quel sentiero: le tappe devono essere consecutive ';
        
signal sqlstate '45000' set message_text msg;

END IF;

SELECT inizio into temp_inizio_tappaNEW
FROM TAPPA
WHERE 
NEW.IDtappa=TAPPA.IDtappa;

SELECT fine into temp_fine_tappaOLD
FROM TAPPA
WHERE temp_tappaOLD
=TAPPA.IDtappa;

IF 
temp_inizio_tappaNEW<>temp_fine_tappaOLD THEN

        set msg 
'INSERT: La fine della tappa precedente non corrisponde con l inizio di questa tappa: le tappe devono essere consecutive ';
        
signal sqlstate '45000' set message_text msg;

END IF;


END$$
-- ----------------------------------------------------------------------------------------------