Sommario
Mysql avanzato - Programmazione triggerUn trigger è un oggetto all'interno del database che esegue un'azione quando si verifica un'operazione o un evento nel database.
Esempio quando viene venduto un biglietto d'ingresso, scontiamo un posto disponibile.
Il codice generico è
CREA TRIGGER nome dell'innesco
{PRIMA | DOPO DI }
// Verrà eseguito prima o dopo l'evento
{INSERIRE | AGGIORNAMENTO | ELIMINA}
// azione o evento che attiva il trigger
ON nometabella
// nome della tabella che ha interessato l'evento
PER OGNI RIGA
sql da eseguire
Creiamo l'esempio della vendita dei biglietti per un evento o un prodotto in stock. Per testarlo puoi usare phpmyadminn o qualsiasi software che supporti le stored procedure e i trigger.
Creiamo il database
CREA DATABASE `vendite`
Creiamo 2 tabelle
Il tavolo per conservare i biglietti venduti
CREA TABELLA `biglietti` (
`id` int (10) NOT NULL AUTO_INCREMENT,
`idevent` int (11) NOT NULL,
`nroticket` int (11) NOT NULL,
CHIAVE PRIMARIA (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
La tabella per memorizzare la disponibilità dei biglietti per un determinato evento
CREA TABELLA SE NON ESISTE `stock` (
`idevent` int (10) NOT NULL,
`stockactual` int (10) NOT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1;
CREATE TABLE `eventi` (
`idevent` int (10) NOT NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
`data` data NOT NULL,
CHIAVE PRIMARIA (`idevent`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Creiamo il trigger come query sql, in questo caso utilizziamo il software gratuito HEIDISQL, il NEW statement.column_name
a indica quale campo dell'operazione di trigger andremo ad utilizzare nell'esecuzione in questo caso di evento, se ce ne sono di più li uso sempre con NEW davanti,
CREA TRIGGER `update_stock` DOPO AVER INSERITO SU` biglietti`
PER CIASCUNO
RIGA
AGGIORNA SET stock stockactual = stockactual -1 WHERE idevent = NEW.idevent
INSERISCI IN VALORI `sales``stock` (`sera`, `stock corrente`) ('1', '500');
Supponiamo di vendere il biglietto numero 100 per l'evento 1 e di inserire la vendita nel database dei biglietti
INSERIRE NEI biglietti (idevent, nroticket) VALUES ('1', '100');
Osserviamo cosa è successo nella tabella delle scorte e vedremo che la borsa per questo evento ha ora 499 biglietti disponibili, perché l'inserto nella tabella biglietto Sparo e corro il tigro update_stock.
L'uso di questa metodologia consente la trasparenza di esecuzione sia per l'utente che per il programmatore, sapendo che un'azione verrà eseguita se un'altra la attiva e quindi evitare attività di routine come l'aggiornamento di uno stock in caso di vendita, immagina questo se la vendita è un mercato con migliaia di prodotti, vediamo come con poche righe di codice risolviamo un grosso problema.
Un altro esempio potrebbe essere quello di rimuovere un prodotto dal magazzino e rimuovere lo stock
CREATE TRIGGER `Prodotti_inferiori` DOPO ELIMINA ON` prodotti`
PER CIASCUNO
ELIMINA DAL magazzino WHERE productid = NEW.productid
RIGA
Le possibilità sono infinite e puoi approfondire situazioni più complesse, i trigger sono un ottimo complemento alle stored procedureTi è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo