Vad är en trigger
Triggers implementerades i MySQL 5.02
En trigger är ett namngivet databasobjekt som är associerad till en tabell.
En trigger aktiveras när man kör INSERT, UPDATE eller DELETE på tabellen.
Syntax
CREATE TRIGGER
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE} ON <table>
FOR EACH ROW
BEGIN
sqlkod...
END
Härleda till nya och gamla fält
I en trigger kan du härleda till vilket fält som helst i en tabell. Men du kan inte bara
skriva fältnamnet, utan du måste använda NEW och OLD. NEW och OLD kallas för transition variables (övergångsvariabler)
Ett exempel
CREATE TABLE trigger_test (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
Sen skapar vi en trigger som vi döper till on_insert_test. on_insert talar om att triggern aktiveras vid INSERT, och test är namnet på tabellen.
Naturligtvis kan man döpa sin trigger till vad man vill. Det är bra om man döper den
till något logisk namn som beskriver vad triggern gör och vilken tabell den tillhör.
DELIMITER //
CREATE TRIGGER on_insert_test
BEFORE INSERT ON trigger_test
FOR EACH ROW
BEGIN
IF NEW.name = '' THEN
SET NEW.name = 'Namn saknas';
END IF;
END//
DELIMITER ;
DELIMITER < tecken >, betyder att man ändrar avgränsaren. Avgränsaren ";"
används för att avsluta sqlkod, så vi byter ut avgränsaren till "//" för att det inte ska krocka.
Förklaring vad triggern gör
Vad denna trigger gör är att den sätter fältvärdet för fältet name till "Namn saknas"
innan data skrivs till tabellen.
Sätt in tre rader i tabellen trigger_test
INSERT INTO trigger_test (name) VALUES('Per'),('Kalle'),('')
Så fort vi exekverar INSERT frågan så körs triggern.
Resultatet blir
1
Per
2
Kalle
3
Namn saknas
Triggern byter ut värdet till "Namn saknas" för den tredje raden innan den sparas, då den tredje raden är tom.
Det finns en del användningsområden där triggers är bra att använda.
I ett loginscript kan en trigger vara bra om man tänker logga varje inloggningsförsök automatiskt.
Skapades: 2007-08-03 00:10:40 Skribent: chrillemeter Lästs 2152 gånger Betyg: 0 (artikeln har endast 1 röster, det krävs minst 5 för ett betyg)