Heim  >  Artikel  >  Datenbank  >  Fragen zu MySQL-Triggern

Fragen zu MySQL-Triggern

一个新手
一个新手Original
2017-10-23 10:30:172119Durchsuche

Trigger

Ein Trigger in MySQL ist ein Datenbankobjekt, das sich auf Tabellenoperationen bezieht. Wenn ein bestimmtes Ereignis in der Tabelle eintritt, in der sich der Trigger befindet, wird es ausgeführt wird aufgerufen Das Objekt, das heißt, das Operationsereignis der Tabelle löst die Ausführung des Triggers für die Tabelle aus.

Wenn Sie einige Daten in einer Tabelle ändern, möchten Sie manchmal, dass sich auch die Daten in anderen zugehörigen Tabellen ändern. Mithilfe von Triggern können solche Anforderungen erfüllt werden. Der Einsatz von Triggern kann das Programm vereinfachen und die Flexibilität des Programms erhöhen.

Die Syntax zum Erstellen eines Triggers lautet wie folgt:

create trigger  name(触发器名称)
after/befor(触发时间)
insert/update/delete(触发事件,当填写其中一种,其它的操作不会激活触发器)
on (监视的表,即在哪张表上建立触发器 )
for each row (行级触发器)
begin
(sql语句,希望改变的数据,可写多条语句,每条语句必须用 ; 结尾)
end;

Die obige SQL-Anweisung wird nach dem Schreiben ausgeführt ;. Es wird ein Fehler gemeldet, bevor der Trigger abgeschlossen ist!

Der DELIMITER-Befehl wird zu diesem Zeitpunkt verwendet (Trennzeichen ist das Trennzeichen, die Bedeutung von Trennzeichen ist ein Befehl und erfordert keine End-of-Statement-ID). Die Syntax lautet:

DELIMITER ;; (die Endkennung von MySQL kann auf andere Symbole festgelegt werden, z. B. ;; oder $ kann auch auf mehrere Längen festgelegt werden)

Nach dieser Anweisung reagiert der Trigger nicht, wenn er mit einem Semikolon endet. Nur wenn ;; angetroffen wird, gilt dies als Ende der Anweisung. Hinweis: Denken Sie daran, es nach der Verwendung wieder zu ändern!

Angenommen, es gibt zwei Tabellen im System:
Produkttabelle „Waren“ (Produkt-ID-GID, Produktname Warenname, Produktmenge Warennummer)
Bestelltabelle „Ord“ (Bestell-ID, Produkt-ID-GID). , Bestellmenge waren_viel )
Um einen Auslöser zu erstellen, der die Warenmenge in der Produkttabelle automatisch mit der Bestellmenge in der Bestelltabelle aktualisiert, lautet der Code wie folgt:

delmiter $
#判断库存是否足够
create trigger t1
before
insert
on ord
for each row
begin
#声明变量
declare
goods_num int;
select num into goods_num from goods where gid = new.gid;
#判断
if new.much > goods_num then
    set new.much = goods_num;
end if;
update goods set num = num - new.much where gid=new.gid
end$
delmiter ;

Verwenden Sie „deklarieren in“. MySQL definiert eine lokale Variable. Diese Variable kann nur in der zusammengesetzten Anweisung BEGIN ... END verwendet werden und sollte am Anfang der zusammengesetzten Anweisung definiert werden.

Das Schlüsselwort NEW wird im obigen Beispiel verwendet , das INSERTED und DELETED in MS SQL Server ähnelt, werden in MySQL definiert, um die Datenzeile in der Tabelle darzustellen, in der sich der Trigger befindet, der den Trigger ausgelöst hat.
Im Einzelnen:
In Triggern vom Typ INSERT wird NEW verwendet, um neue Daten darzustellen, die (VOR) eingefügt werden oder eingefügt wurden (AFTER);
In Triggern vom Typ UPDATE wird OLD verwendet, um anzuzeigen, dass dies der Fall sein wird oder Die Originaldaten, die geändert wurden, NEW wird verwendet, um die neuen Daten darzustellen, die geändert werden oder wurden.
Im DELETE-Typ-Trigger wird OLD verwendet, um die Originaldaten darzustellen, die gelöscht werden oder wurden;

Das obige ist der detaillierte Inhalt vonFragen zu MySQL-Triggern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn