Triggers de SQL
octubre 5, 2021Os triggers son una especie de disparadores de eventos que salta cando se elimina, modifica ou engade un rexistro.
Hay dous momentos de acción:
BEFORE
– Antes da acción
AFTER
– Despois da acción
Tamén hay tres tipos de accións:
I
– Insertar
U
– Modificar
D
– Borrar
Aos triggers, hai que poñelos un nome, e existe unha convención (non obrigatoria) para poñelos.
Táboa+_+Momento+Acción
Por exemplo:
PRODUCTOS_AI
A continuación poño uns exemplos de sintaxes.
Facer un trigger que engada un rexistro das insercións dunha táboa, nunha táboa de rexistro e garde a hora e data:
CREATE TRIGGER TiggerName_AI AFTER INSERT ON Table FOR EACH ROW INSERT INTO Log_Table (Field1, Field2, Field3, Date) VALUES(NEW.Field1, NEW.Field2, NEW.Field3, NOW())
Facer un trigger que engada un rexistro das modificacións dunha taboa, nunha táboa de respaldo e garde o usuario mais a hora e data:
CREATE TRIGGER TiggerName_BU BEFORE UPDATE ON Table FOR EACH ROW INSERT INTO Backing_Table (Previous_Field1, Previous_Field2, Previous_Field3, New_Field1, New_Field2, New_Field3, User, Date) VALUES(OLD.Field1, OLD.Field2, OLD.Field3, NEW.Field1, NEW.Field2, NEW.Field3, CURRENT_USER(), NOW())
Facer un trigger que engada un rexistro dos borrados dunha taboa, nunha táboa de respaldo e garde o usuario mais a hora e data:
CREATE TRIGGER TiggerName_AD AFTER DELETE ON Table FOR EACH ROW INSERT INTO Backing_Table (Field1, Field2, Field3, User, Date) VALUES(OLD.Field1, OLD.Field2, OLD.Field3, CURRENT_USER(), NOW())
Modificar un trigger engadindo dous campos (primeiro elimina o trigger e despois o volve a crear):
DROP TRIGGER IF EXIST Trigger_Name; CREATE TRIGGER NewTiggerName_AD AFTER DELETE ON Table FOR EACH ROW INSERT INTO Backing_Table (Field1, Field2, Field3, User, Date) VALUES(OLD.Field1, OLD.Field2, OLD.Field3, CURRENT_USER(), NOW())
Eliminar un trigger:
DROP TRIGGER Trigger_Name
Can I just say what a comfort to find somebody who truly understands what theyre talking about on the net. You certainly understand how to bring a problem to light and make it important. A lot more people really need to look at this and understand this side of the story. I cant believe youre not more popular because you definitely possess the gift.