Imparare i trigger Mariadb

Imparare i trigger Mariadb

Come usare i trigger in Mariadb

Un trigger è una procedura che viene attivata automaticamente quando viene eseguita qualsiasi modifica in una tabella del database. Non è possibile chiamare o eseguire manualmente alcun trigger. Lo scopo principale di utilizzare i trigger è mantenere l'integrità del database e può essere utilizzato con i vincoli di integrità referenziale che costringe le regole di integrità. In un DBMS, quando si verifica qualsiasi evento di insert, aggiornamento ed eliminazione. Diversi tipi di trigger sono supportati dal database. I trigger sono principalmente classificati in due modi. Uno è prima del grilletto e un altro è dopo il grilletto. Prima che i trigger vengano chiamati prima che ogni evento venga eseguito nella tabella e dopo che i trigger vengono chiamati dopo aver eseguito qualsiasi evento nella tabella. Come si installa MariaDB e si applica diversi tipi di trigger nel server di database MariaDB su Ubuntu è mostrato in questo tutorial.

Installazione di MariaDB:

Esegui il comando di seguito per aggiornare il sistema e installare il server MariaDB e il client.

# sudo apt-get update && sudo apt-get installa mariadb-server mariadb-client

Tipo 'y e premere Invio per completare il processo di installazione.

Esegui il seguente comando per avviare il server MariaDB.

# sudo systemctl avvia mariadb

Controllare che il server funziona correttamente o no. L'output del seguente comando mostrerà lo stato dei dettagli del server. L'output lo indica Mariadb 10.1.30 Verion è in esecuzione.

# sudo systemctl status mariadb

Esegui il comando seguente se si desidera interrompere il server. Non eseguire questo comando ora.

# sudo systemctl stop mariadb

Imposta il database e le tabelle

È necessario creare un database e due o più tabelle per verificare come funzionano i trigger. Prima di tutto, esegui il client MySQL per configurare il database. Chiederà la password di root per accedere al server di database.

# sudo mysql -u root

Crea un database chiamato negozio.

> Crea un archivio di database;

Seleziona questo nuovo database:

> Usa Store;

Crea tre tabelle in negozio database per applicare azioni di trigger su questi. Qui, prodotti, stock e stock_add Le tabelle sono create.

Crea prodotti da tavolo
(id int (11),
Nome varchar (30) non null,
Price int (11),
Chiave primaria (ID)
);
Crea titoli da tavolo
(Product_id int (11),
apertura_stock int (11),
current_stock int (11),
Chiave primaria (Product_id)
);
Crea tabella stocks_add
(Product_id int (11),
data_date,
quantità int (11),
Chiave primaria (Product_id, entry_date)
);

Ora, inserisci alcuni dati in queste tre tabelle.

Prodotti:

INSERT IN PRODOTTI ID Set = 101, name = "Bag", prezzo = 1000;
INSERT IN PRODOTTI SET ID = 102, name = "penna", prezzo = 100;
INSERT IN PRODOTTI ID ID = 103, Name = "Pencil", Price = 50;

stock:

Inserisci in stock set Product_id = 101, apertura_stock = 200, current_stock = 100;
Inserisci in stock set Product_id = 102, apertura_stock = 230, current_stock = 150;
Inserisci in stock set Product_id = 103, apertura_stock = 220, current_stock = 300;

stocks_add:

Inserisci in stocks_add set Product_id = 103, entry_date = "2018-01-01", quantità = 30;
Inserisci in stocks_add set product_id = 103, entry_date = "2018-01-02", quantità = 50;
Inserisci in stocks_add set product_id = 103, entry_date = "2018-01-03", quantità = 45;

Crea dopo trigger

È possibile creare dopo trigger per eseguire automaticamente qualsiasi azione dopo aver inserito o aggiornato o eliminato i record di una tabella particolare. Qui, prodotti E stock Le tabelle sono selezionate per creare dopo eliminare trigger. I dati della tabella di scorta dipendono dai dati della tabella dei prodotti. Quindi, se viene rimosso un record dalla tabella dei prodotti, è necessario rimuovere i record correlati della tabella delle azioni. Crea la seguente procedura di trigger per eliminare automaticamente qualsiasi record correlato dalla tabella delle azioni quando qualsiasi record viene rimosso dalla tabella dei prodotti. In questo trigger, l'ID eliminato è riconosciuto da vecchio.id.

Delimitatore //
Crea trigger Products_after_delete
Dopo la cancellazione
Sui prodotti per ogni riga
INIZIO
Elimina da titoli dove Product_id = vecchio.id;
FINE;
//


Dopo che il trigger è stato creato per la tabella dei prodotti. Ora devi testare che il trigger funziona correttamente o no. Eseguire la seguente query per rimuovere un record dai prodotti dove id È 101 e controlla i dati di entrambi i prodotti e le tabelle delle scorte. Dopo aver eseguito la query, scoprirai che il record correlato della tabella di scorta viene rimosso da After Trigger. Nessun record per il valore ID, 101, sarà trovato in entrambe le tabelle.

> Elimina dai prodotti in cui id = 101;
> Seleziona * dai prodotti;
> Seleziona * dalle scorte;

Crea prima dei trigger

Prima che il trigger venga utilizzato per intraprendere qualsiasi azione prima di inserire o aggiornare o eliminare qualsiasi o più record da una tabella particolare. Qui, stock E stocks_add La tabella viene utilizzata per creare prima del trigger. Il valore della tabella Current_Stock del titolo dipende dal valore della quantità della tabella stocks_add. Se si aggiorna qualsiasi valore di quantità della tabella stocks_add, quindi la tabella delle azioni deve essere aggiornata. Quindi, se un valore di quantità esistente della tabella stocks_add diminuisce, allora corrente_stock di titoli verrà ridotto e se il valore della quantità aumenta, quindi corrente_stock verrà aumentato. Crea prima dell'aggiornamento trigger per la tabella stocks_add. In questo trigger, il valore di quantità modificato viene calcolato sottraendo la vecchia quantità da una nuova quantità.

Delimitatore //
Crea trigger stocks_before_update
Prima dell'aggiornamento
Su stocks_add per ogni riga
INIZIO
Aggiorna gli stock imposta current_stock = current_stock+(nuovo.quantità secolare.quantità)
Dove product_id = vecchio.Codice prodotto;
FINE;
//

Prima dell'aggiornamento, controlla i valori correnti di entrambi i titoli e tabelle stocks_add.

> Seleziona * dalle scorte;
> Seleziona * da stocks_add;


Supponiamo, è necessario aggiornare il valore della quantità della tabella stocks_add dove Codice prodotto È 103 E data di ingresso È 2018-01-01 che è 30 Ora. Se si desidera aggiornare il valore di 75 Quindi eseguire la seguente query di aggiornamento e controllare di nuovo entrambe le tabelle. La quantità aumentata è, 75-30 = 45. Quindi, dopo l'aggiornamento, il trigger verrà licenziato e la tabella Current_Stock della tabella delle azioni verrà impostata come, 300+45 = 345.

Aggiorna stocks_add set Quantity = 75 Where Product_id = 103 e entry_date = "2018-01-01";
> Seleziona * dalle scorte;
> Seleziona * da stocks_add;

L'uso di due tipi di trigger è mostrato in questo tutorial. In modo simile, è possibile creare altri tipi di prima e dopo trigger per le tabelle di database in base ai requisiti.