Mysql avanzato - Programmazione trigger

Sommario
Mysql avanzato - Programmazione trigger
Un 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

Eseguiamo l'istruzione SQL e vediamo che il trigger è stato effettivamente creato:

Ad esempio inseriamo nel tablestock di 500 ticket disponibili per un evento, qui non ci sarà risposta dal trigger poiché lo creiamo per essere eseguito se si verifica un inserimento nel table ticket.
INSERISCI IN VALORI `sales``stock` (`sera`, `stock corrente`) ('1', '500');

Ora proviamo la magia dei trigger
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
wave wave wave wave wave