Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [MySQL] Creazione trigger

    Ciao, avrei bisogno di aiuto per la creazione di un trigger. Praticamente devo fare in modo che un campo (tipo) di un utente che ha più di 10 iscrizioni confermate ad un evento venga modificato.
    Le iscrizioni confermate sono date dal campo Stato di questa tabella
    ISCRIZIONE(Id, Data, UtenteS, UtenteP, Ruolo, Stato, IdEvento, Squadra)
    che assume il valore C quando sono confermate (avviene quindi un UPDATE ad ogni cambio di stato).

    (Per l'UtenteS della tabella, che poi riferisce il relativo utente nella tabella Utente)

    1° passo dovrei contarle per ogni utente. Se sono più di 10
    2° passo aggiorno la tabella Utente e cambio il campo Tipo.

    Problema: non so come tradurre in codice tutto questo, data la mia scarsa esperienza sui trigger.
    Ho pensato a una roba del tipo:

    codice:
    CREATE TRIGGER PromozioneUP
    AFTER UPDATE ON ISCRIZIONE
    FOR EACH ROW
    SELECT COUNT(*) AS ISCRIZIONI_CONFERMATE
    FROM ISCRIZIONE
    WHERE ISCRIZIONE.Stato='C'
    BEGIN
    WHEN ISCRIZIONI_CONFERMATE>10
    UPDATE UTENTE
    SET NEW.TIPO='P'
    WHERE UTENTE.Username=NEW.USERNAME
    END
    che naturalmente non funziona perché la sintassi è sicuramente sbagliata.
    Grazie infinite a chiunque vorrà aiutarmi.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    Non è per andare contro-corrente.
    Ma:
    1) Identare il codice per permettere una lettura più facile;
    2) Mostrare il messaggio di errore, così da evitare all'utente di eseguire il tutto in locale per vedere cosa non va;

    Non sarebbe poi una cattiva idea...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Scusami, in realtà avevo messo il tag codice, poi ho fatto l'antemprima del messaggio prima di inviarlo e il contenuto del messaggio è sparito (mi succede sempre) quindi ho dovuto copincollarlo dalla finestra dell'anteprima ed il tag è quindi scomparso (ma io non lo vedevo). Non riesco nemenoa modificarlo perché se clicco modifica la finestra del messaggio è vuota! Invece questo messaggio senza codice me lo ha fatto modificare.

    L'errore che mi dà è di sintassi, sicuramente è sbagliata.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Per semplificarmi la vita (o almeno così credevo) ho aggiunto un campo Iscrizioni_Confermate in Utente che vado ad incrementare con un trigger su Iscrizione ad ogni update. Ho creato quindi questo trigger su Iscrizione

    CREATE TRIGGER `Incremento_Iscrizioni`
    AFTER UPDATE ON `ISCRIZIONE`
    FOR EACH ROW
    UPDATE UTENTE SET Iscrizioni_Confermate=Iscrizioni_Confermate+1
    WHERE Username=NEW.UtenteS

    E come sintassi ci siamo, però ho due problemi:
    1) NON funziona. Ho provato a fare un UPDATE sulla tabella Iscrizioni ed il campo iscrizioni_confermate di Utente non viene incrementato affatto.

    Se per caso l'1) non fosse sufficiente...
    2) mi sono accorta che non posso incrementare il contatore ad ogni update, perché un update potrebbe essere fatto anche per rifiutare un'iscrizione e quindi incrementare il contatore sarebbe sbagliato.
    Come posso risolvere???
    Grazie...

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