Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di trigger MySQL

Questo articolo descrive come creare e utilizzare i trigger MySQL sul tuo account di hosting A2. I trigger sono regole predefinite associate a una tabella. Possono essere chiamati ("attivati") prima o dopo che un'istruzione SQL inserisce, aggiorna o elimina i dati dalla tabella associata.

È possibile utilizzare i trigger in un'ampia gamma di scenari. Ad esempio, puoi utilizzare un trigger per modificare automaticamente determinati valori quando una riga viene aggiornata. Oppure puoi specificare una serie di azioni da intraprendere ogni volta che una riga viene eliminata. Le possibilità sono quasi infinite.

Creazione e utilizzo di trigger

Puoi creare e utilizzare trigger su qualsiasi server A2 Hosting che utilizza MySQL.

Configurazione di un database di test

Per dimostrare un esempio di base di un trigger in azione, iniziamo creando un database a scopo di test. Nella seguente istruzione SQL, sostituisci nome utente con il nome utente del tuo account:

CREATE DATABASE username_test;
Puoi eseguire il comando SQL precedente (e i seguenti comandi SQL) dalla riga di comando usando lo strumento MySQL o nel tuo browser web usando phpMyAdmin.

Se stai usando phpMyAdmin, fai clic sul nome nome utente _test per selezionare il database. Altrimenti, se stai usando il programma da riga di comando mysql, digita la seguente istruzione SQL:

USE username_test;

Quindi, crea una tabella nel nome utente _prova database denominato prodotti . A tale scopo, eseguire la seguente istruzione SQL:

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

La seguente istruzione SQL aggiunge alcuni dati di esempio ai prodotti tabella:

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);

Ora siamo pronti per creare un trigger per il nostro tavolo!

Creazione dell'attivatore

Creiamo un trigger chiamato updateProductPrice . Questo particolare trigger viene attivato ogni volta che i prodotti la tabella è aggiornata. Quando si verifica questo evento, il trigger controlla ogni riga per vedere se il costo del prodotto (prod_cost ) è in corso la modifica del valore. In tal caso, l'attivatore imposta automaticamente il nuovo prezzo dell'articolo (prod_price ) a 1,40 volte il nuovo costo dell'articolo (in altre parole, un ricarico del 40%).

Per creare questo trigger, esegui le seguenti istruzioni MySQL:

DELIMITER $$
CREATE TRIGGER `updateProductPrice`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
  IF NEW.prod_cost <> OLD.prod_cost
    THEN
      SET NEW.prod_price = NEW.prod_cost * 1.40;
  END IF ;
END$$
DELIMITER ;
Il DELIMITORE Il comando all'inizio di queste istruzioni impedisce a MySQL di elaborare la definizione del trigger troppo presto. Il DELIMITORE il comando alla fine di queste istruzioni riporta l'elaborazione alla normalità.
Utilizzo del trigger

L'aggiornamento del prezzo del prodotto trigger è ora pronto per essere richiamato automaticamente ogni volta che una riga nei prodotti la tabella è aggiornata. Ad esempio, esegui la seguente istruzione SQL per modificare il costo del widget di base:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Quando si esegue questa istruzione SQL, anche il trigger si attiva e aggiorna automaticamente il prezzo del widget di base in proporzione al nuovo costo. Per verificarlo, puoi eseguire la seguente istruzione SQL:

SELECT * FROM products;

Questa istruzione restituisce i seguenti risultati:

+---------+--------------+-----------+------------+
| prod_id | prod_name    | prod_cost | prod_price |
+---------+--------------+-----------+------------+
|       1 | Basic Widget |         7 |        9.8 |
|       2 | Micro Widget |      0.95 |       1.35 |
|       3 | Mega Widget  |     99.95 |        140 |
+---------+--------------+-----------+------------+
3 rows in set (0.00 sec)

Come puoi vedere, l'aggiornamentoProductPrice trigger ha aggiornato automaticamente il prezzo del Widget Base (9,80) in base al nuovo costo (7,00). Sebbene questo sia un semplice esempio di ciò che può fare un trigger, puoi utilizzare le stesse tecniche nei tuoi database:le possibilità sono quasi infinite.

Maggiori informazioni

  • Per ulteriori informazioni sui trigger MySQL, visitare http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Per ulteriori informazioni su CREA TRIGGER dichiarazione, visitare http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.