Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

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

    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$$
    -- ---------------------------------------------------------------------------------------------- 

  2. #2
    Ok allora.... com'è possibile che non riesca a stampare un messaggio di 100 caratteri?
    L'ha fatto su molti altri error-code....

    Se accorcio la frase
    'INSERT: Il sentiero ha già il massimo numero di tappe consentito ';
    funziona e mi stampa il messaggio ..... ma se voglio stampare 250 caratteri?Non posso? Mi sembra impossibile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.