• User

    MYSQL 5 - Triggers

    Salve a tutti voi,
    da qualche giorno sto provando queste nuove funzionalità di MYSQL, e sono arrivato ad provare, o meglio cercare di concatenare (sempre se possibile) delle stored function/procedure con i trigger.

    A quanto pare no ogni qualvolta che scatta l'evento del trigger mi dà un errore; L'errore in questione è questo:

    
     MySQL said: Documentation
    #1422 - Explicit or implicit commit is not allowed in stored function or trigger. 
    
    

    La domanda è:
    "Esiste un modo per far chiamare una funzione o procedura via TRIGGER?!"
    Son giorni che cerco, o cerco male o non esiste.

    Spero che qualcuno di voi mi illumini 😛
    Grazie!

    EDIT: Se non richiamo tramite CALL nulla il trigger non dà errori e inserisce nel database i valori che gli passo senza problemi!


  • User

    Non sono ancora riuscito a trovare la soluzione ma almeno ho trovato risposta alla mia domanda!

    26.5.8: Can a trigger call a stored procedure?
    Yes.

    Vi terrò informati nel caso qualcun'altro in futuro si trovi nella stessa situazione.

    Quasi dimenticavo, buon anno a tutti


  • User

    Il mistero è stato svolto grazie a Bob del forum di mysql.com;
    L'utilizzo del COMMIT in modo esplicito era dato dal "TRUNCATE TABLE mytable" all'interno della stored che dato che usavo il motore MyISAM cancellava la tabella e la ricreava immediatamente.
    Ho rimmediato utilizzando un DELETE FROM mytable.


  • Super User

    ottimo 🙂

    ho sul comodino il manuale di mysql5, devo ancora decidermi ad aprirlo e cominciare a studiare perchè presto serviranno anche a me le storeprocedure e trigger solo che attualmente non sono ancora in grado di aiutarti

    visto che ormai sei un mago di mysql magari tra un po' verrò a chiederti aiuto heheh


  • User

    Queste novità di MYSQL5 sono molto utili;
    Inoltre creando delle procedure (blocchi di istruzioni mysql) è molto comodo per un fatto di leggibilità ma sopratutto di velocità;

    Questa stored ci mette meno di un secondo a fare:

    • Un select che estrae tutte le keywords che ho in un campo
    • Splittarle
    • Inserirle in un altra tabella

    E inoltre il trigger che è un evento di mysql che può scattare prima o dopo una determinata azione (insert,update,delete etc) fà si che richiami la procedura automaticamente aggiornando tutta la lista delle keywords.

    Percui ve le consiglio.

    @"Tymba" said:

    visto che ormai sei un mago di mysql magari tra un po' verrò a chiederti aiuto heheh

    Non esagerare ora su, c'è ancora tanto da imparare;Se posso darti una mano perchè no 😛


  • User

    Ciao,

    questa roba mi sembra molto interessante!

    Secondo voi sarebbe utile/possibile utilizzare delle stored procedures per mantenere la consistenza del database?
    Ad esempio:
    se voglio cancellare un record da una tabella e alcuni dei campi di questo record sono collegati ad altri campi di altre tabelle, una stored potrebbe aiutarmi in modo automatico a "sistemare" anche tutti gli altri campi delle tabelle collegate?

    Grazie delle risposte

    Saluti a tutti


  • User

    Piu' che altro potrebbero esserti d'aiuto i TRIGGER; Crei un trigger dopo l'evento che piu' desideri ed a questo lasci il compito di "pulire" il tuo dat;
    La SP è una cosa in più;Puoi inserire un blocco di codice nel trigger stesso,non c'è bisogno per forza di associare un SP ad un trigger.