Sommario
L'istruzione che crea un trigger èCREATE TRIGGER trigger_name evento tempo ON tabella SU OGNI RIGA
Momento
Può essere AFTER o BEFORE, ovvero dopo o prima che si verifichi un evento sql, come la creazione di un record, l'eliminazione, la selezione, la ricerca, la modifica, ecc.
Evento
Chiamiamo una qualsiasi delle operazioni sql un evento, può essere INSERT, UPDATE o DELETE. Non è possibile effettuare selezioni dai trigger (Seleziona * da…) questa operazione viene eseguita dalle stored procedure e non dai trigger.
Dichiarazioni generali e comandi per gestire trigger o trigger
Creiamo un trigger per un audit nelle vendite di un'agenzia di auto, ogni volta che un operatore o venditore modifica i dati di un cliente, automaticamente in una tabella di audits_cliente indicheremo la data e l'ora, chi ha effettuato la modifica e chi è il cliente che è stato modificato
CREATE TRIGGER client_audit_trigger DOPO AGGIORNAMENTO SUI client PER OGNI RIGA INSERIRE IN client_audit (clientid, modificato_da, data) VALUES (OLD.clientid, NEW.idoperator, ADESSO ())Interroga tutti i trigger disponibili nel database
Mostra triggerIn questo caso, quello che creiamo audit del client e vediamo la sua funzionalità in diverse colonne, un evento di aggiornamento nella tabella dei client che farà un inserimento e il suo utente amministratore è root
Elimina un trigger dal database
DROP TRIGGER nome trigger
Come chiamare le stored procedure in un trigger
Analizzeremo un esempio per un database di prodotti e che quando si genera una vendita un venditore deve generare anche la commissione che guadagna, quindi la commissione per vendita deve essere aggiornata dopo aver inserito o generato la nuova vendita oppure potrebbe essere anche dopo aver generato una fattura , a seconda del modello di business da sviluppare, ma è sufficiente per capire l'esempio.
Creiamo una stored procedure che calcolerà la commissione in base alla quantità di un prodotto venduto.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_ID fornitore INT, IN p_ID prodotto INT, IN quantità INT) BEGIN DECLARE totalcommission INT DEFAULT 0; Seleziona la commissione dai prodotti dove productid = p_productid; totalcommission = commissione * p_amount inserire nelle commissioni (venditore, commissione) i valori (sellerid, productid, commission, totalcommission); FINE $$ DELIMITATORE $$
Ora creiamo il nuovo trigger di vendita. Questo trigger verrà eseguito dopo aver inserito una vendita e aver preso i dati di questa o del dettaglio della vendita.
CREA TRIGGER nuova vendita DOPO INSERIRE sulle vendite PER OGNI RIGA INIZIA CHIAMATA pa_commissioni (nuovo.id venditore, nuovo.idprodotto, nuova.quantità); FINE $$
Possiamo vedere che la stored procedure viene chiamata per poter consultare i dati del prodotto, la commissione e quindi poter calcolare automaticamente l'importo della commissione.
Potremmo anche renderlo più complesso permettendo di sapere se la commissione e la vendita esistono già, quindi modificarla e non inserirla nuovamente.
Per questo dovremmo riconoscere anche il numero di vendita o di fattura, quindi cerchiamo se il prodotto esiste già nel numero di vendita e venditore, implica che esiste già ed è stato commissionato, quindi lo modificheremo e non lo inseriremo come nuova vendita.
select count (productid)> 0 in esiste già da commissioni dove sellerid = sellerid e salesid = salesid; se esiste già allora UPDATE commissions set commission = totalcommission dove sellerid = sellerid e salesid = salesid; altrimenti inserire nelle commissioni (venditore, commissione) valori (sellerid, productid, commission, totalcommission); finisci se;Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo