sql >> Databasteknik >  >> RDS >> Mysql

Använder MySQL-triggers

Den här artikeln beskriver hur du skapar och använder MySQL-utlösare på ditt A2 Hosting-konto. Utlösare är fördefinierade regler kopplade till en tabell. De kan anropas ("utlösta") före eller efter att en SQL-sats infogar, uppdaterar eller raderar data från den associerade tabellen.

Du kan använda triggers i en mängd olika scenarier. Du kan till exempel använda en utlösare för att automatiskt ändra vissa värden när en rad uppdateras. Eller så kan du ange en uppsättning åtgärder som ska utföras när en rad raderas. Möjligheterna är nästan oändliga.

Skapa och använda triggers

Du kan skapa och använda triggers på vilken A2 Hosting-server som helst som använder MySQL.

Konfigurera en testdatabas

För att visa ett grundläggande exempel på en utlösare i aktion, låt oss börja med att skapa en databas för teständamål. Ersätt användarnamn i följande SQL-sats med ditt kontoanvändarnamn:

SKAPA DATABAS användarnamn _test;
Du kan köra det föregående SQL-kommandot (och följande SQL-kommandon) från kommandoraden med MySQL-verktyget eller i din webbläsare med phpMyAdmin.

Om du använder phpMyAdmin, klicka på namnet användarnamn _test för att välja databasen. Annars, om du använder kommandoradsprogrammet mysql, skriv följande SQL-sats:

ANVÄND användarnamn _test;

Skapa sedan en tabell i användarnamnet _test databas med namnet produkter . För att göra detta, kör följande SQL-sats:

CREATE TABLE-produkter (prod_id INT INTE 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, PRIMÄRNYCKEL(prod>_id)); 

Följande SQL-sats lägger till några exempeldata till produkterna tabell:

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

Nu är vi redo att skapa en trigger för vårt bord!

Skapa utlösaren

Låt oss skapa en utlösare som heter updateProductPrice . Den här utlösaren aktiveras när produkterna tabellen uppdateras. När denna händelse inträffar kontrollerar utlösaren varje rad för att se om produkten kostar (prod_cost ) värdet ändras. Om det är det, ställer utlösaren automatiskt in varans nya pris (prod_price ) till 1,40 gånger varans nya kostnad (med andra ord 40 % påslag).

För att skapa denna utlösare, kör följande MySQL-satser:

DELIMITER $$CREATE TRIGGER `updateProductPrice` INNAN UPPDATERING PÅ `produkter`FÖR VARJE RAD BÖRJAR IF NEW.prod_cost <> OLD.prod_cost SÅ STÄLL IN NEW.prod_price =NEW.prod_cost * 1,40; END IF;END$$DELIMITER;
DELIMITER kommandot i början av dessa satser förhindrar MySQL från att bearbeta triggerdefinitionen för tidigt. DELIMITER kommandot i slutet av dessa satser återställer bearbetningen till det normala.
Använda triggern

updateProductPrice triggern är nu redo att anropas automatiskt när en rad i produkterna tabellen uppdateras. Kör till exempel följande SQL-sats för att ändra kostnaden för Basic Widget:

UPPDATERA produkter SET prod_cost =7,00 WHERE prod_id =1;

När du kör den här SQL-satsen aktiveras även triggern och uppdaterar automatiskt Basic Widgets pris i proportion till den nya kostnaden. För att verifiera detta kan du köra följande SQL-sats:

VÄLJ * FRÅN produkter;

Detta uttalande returnerar följande resultat:

+--------+--------------+-------------+--- ---+| prod_id | prod_name | prod_kostnad | prod_price |+--------+--------------+-----------+-------- --+| 1 | Grundläggande widget | 7 | 9.8 || 2 | Mikrowidget | 0,95 | 1,35 || 3 | Mega Widget | 99,95 | 140 |+---------+----------------------- --+3 rader i set (0,00 sek)

Som du kan se är updateProductPrice trigger har automatiskt uppdaterat Basic Widgets pris (9,80) baserat på den nya kostnaden (7,00). Även om detta är ett enkelt exempel på vad en utlösare kan göra, kan du använda samma teknik i dina egna databaser – möjligheterna är nästan oändliga.

Mer information

  • För mer information om MySQL-utlösare, besök http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • För mer information om SKAPA TRIGGER uttalande, besök http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.

  1. Skapa en anpassad fraktmetod i OpenCart:Del två

  2. Använda RStudio med en icke-systemversion av unixODBC Driver Manager

  3. Hur man ställer in ett standardvärde för en befintlig kolumn

  4. Hur importerar jag en SQL Server .bak-fil till MySQL?