sql >> Database >  >> RDS >> Mysql

MySQL-triggers gebruiken

In dit artikel wordt beschreven hoe u MySQL-triggers maakt en gebruikt op uw A2-hostingaccount. Triggers zijn vooraf gedefinieerde regels die aan een tabel zijn gekoppeld. Ze kunnen worden aangeroepen ("getriggerd") voor of nadat een SQL-instructie gegevens uit de bijbehorende tabel invoegt, bijwerkt of verwijdert.

U kunt triggers in een groot aantal scenario's gebruiken. U kunt bijvoorbeeld een trigger gebruiken om automatisch bepaalde waarden te wijzigen wanneer een rij wordt bijgewerkt. Of u kunt een reeks acties specificeren die moeten worden uitgevoerd wanneer een rij wordt verwijderd. De mogelijkheden zijn bijna eindeloos.

Triggers maken en gebruiken

U kunt triggers maken en gebruiken op elke A2 Hosting-server die MySQL gebruikt.

Een testdatabase opzetten

Om een ​​eenvoudig voorbeeld van een trigger in actie te demonstreren, beginnen we met het maken van een database voor testdoeleinden. Vervang in de volgende SQL-instructie gebruikersnaam met de gebruikersnaam van uw account:

CREATE DATABASE username_test;
U kunt de vorige SQL-opdracht (en de volgende SQL-opdrachten) uitvoeren vanaf de opdrachtregel met behulp van de MySQL-tool, of in uw webbrowser met phpMyAdmin.

Als u phpMyAdmin gebruikt, klikt u op de naam gebruikersnaam _test om de database te selecteren. Als u het opdrachtregelprogramma mysql gebruikt, typt u anders de volgende SQL-instructie:

USE username_test;

Maak vervolgens een tabel in de gebruikersnaam _test database met de naam producten . Voer hiervoor de volgende SQL-instructie uit:

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));

De volgende SQL-instructie voegt enkele voorbeeldgegevens toe aan de producten tafel:

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);

Nu zijn we klaar om een ​​trigger voor onze tafel te maken!

De trigger maken

Laten we een trigger maken met de naam updateProductPrice . Deze specifieke trigger wordt geactiveerd wanneer de producten tabel is bijgewerkt. Wanneer deze gebeurtenis zich voordoet, controleert de trigger elke rij om te zien of de productkosten (prod_cost ) waarde wordt gewijzigd. Als dit het geval is, stelt de trigger automatisch de nieuwe prijs van het artikel in (prod_price ) tot 1,40 keer de nieuwprijs van het artikel (met andere woorden, een opslag van 40%).

Voer de volgende MySQL-instructies uit om deze trigger te maken:

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 ;
De DELIMITER commando aan het begin van deze instructies voorkomt dat MySQL de triggerdefinitie te snel verwerkt. De DELIMITER opdracht aan het einde van deze instructies herstelt de verwerking naar normaal.
De trigger gebruiken

De updateProductPrice trigger is nu klaar om automatisch te worden aangeroepen wanneer een rij in de producten tabel is bijgewerkt. Voer bijvoorbeeld de volgende SQL-instructie uit om de kosten van de basiswidget te wijzigen:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Wanneer u deze SQL-instructie uitvoert, wordt ook de trigger geactiveerd en wordt de prijs van de Basic Widget automatisch bijgewerkt in verhouding tot de nieuwe kosten. Om dit te verifiëren, kunt u het volgende SQL-statement uitvoeren:

SELECT * FROM products;

Deze instructie geeft de volgende resultaten:

+---------+--------------+-----------+------------+
| 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)

Zoals je kunt zien, is de updateProductPrice trigger heeft automatisch de prijs van de basiswidget bijgewerkt (9,80) op basis van de nieuwe kosten (7,00). Hoewel dit een eenvoudig voorbeeld is van wat een trigger kan doen, kunt u dezelfde technieken gebruiken in uw eigen databases - de mogelijkheden zijn bijna eindeloos.

Meer informatie

  • Ga voor meer informatie over MySQL-triggers naar http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Voor meer informatie over de CREATE TRIGGER verklaring, gaat u naar http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.

  1. PostgreSQL 'NIET IN' en subquery

  2. Een PostgreSQL-gebruiker maken en deze toevoegen aan een database

  3. Is het mogelijk om een ​​recursieve SQL-query te maken?

  4. MySQL:Meerdere rijen als door komma's gescheiden enkele rij