il mio blog personale: foto, video…


Sto caricando i dati ...
Failed to load data!

223 Trigger MySQL per colonne autoincrement

inserito da ligio il 1 Febbraio 2008 alle 12:34
nella categoria informatica, sezione

Ho scoperto poco fa una differenza interessante tra i tempi di azione BEFORE e AFTER dei trigger.
Prendiamo ad esempio in considerazione un trigger di INSERIMENTO.
BEFORE indica che il trigger si attiva prima che ogni riga venga inserita nella tabella.
AFTER indica che il trigger si attiva dopo l’inserimento.

N.B. Dal manuale MySQL si legge:
In a BEFORE trigger, the NEW value for an AUTO_INCREMENT column is 0, not the automatically generated sequence number that will be generated when the new record actually is inserted.

Ammettiamo che il mio DB ha 2 tabelle: User [userid, nome] (con userid autoincrement) e UserStat [userid, datains]
Se volessi creare un trigger che all’inserimento di un nuovo utente mi genera una entry anche in UserStat, NON DEVO azionare il trigger BEFORE INSERT, ma necessariamente AFTER.
In caso contrario, userid della tabella UserStat verrebbe inserito con valore 0.