Visualizzazione dei risultati da 1 a 6 su 6

Discussione: trigger mysql

  1. #1

    trigger mysql

    ciao a tutti, devo creare un trigger in mysql, ma sbaglio qualcosa e non capisoc cosa

    ecco il codice

    codice:
    CREATE TRIGGER multa        
    AFTER UPDATE ON utenti        
        REFERENCING NEW ROW AS New OLD ROW AS old                    
            FOR EACH ROW                    
            SET new.multa= 1                    
            WHEN old.ritardo > 3;

    Grazie epr l'aiuto

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Credo che il grosso problema sia per la clausola AFTER se nn sbaglio nn permette di usare le keywords NEW e OLD
    codice:
    CREATE TRIGGER multa        
    BEFORE UPDATE ON utenti        
                   
            FOR EACH ROW                    
            SET new.multa= 1;                    
            WHEN old.ritardo > 3;
    e gia va molto meglio
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    ciao, grazie per la risposta.
    Ho un paio di problemi,
    - mi da questo errore This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

    non capisco cosa significhi multiple

    e poi io ho bisogno di modificare l'attributo multa dopo aver modificato la tabella utenti e impostato il valore ritardo > 3

  4. #4
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Forse hai gia un trigger su quella tabella.
    Per gli Spartani e Sparta usa spartan Il mio github

  5. #5
    infatti, l'ho cancellato, però mi da errore lo stesso
    un errore disintassi sul WHEN

    ma non dovrei definire cosa sono new e old?

  6. #6
    RISOLTO!

    codice:
    delimiter // CREATE TRIGGER multa        
    BEFORE UPDATE ON utenti          
    FOR EACH ROW          
    BEGIN          
    IF NEW.ritardo > 3 THEN SET NEW.multa = 1;          
    END IF;         
     IF NEW.ritardo > 9 THEN SET NEW.tessera_abilitata = 0;         
     END IF;          IF NEW.ritardo > 9 THEN SET NEW.multa = 0;          
    END IF;          
    END; // delimiter ;

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 © 2025 vBulletin Solutions, Inc. All rights reserved.