triggers pl sql tutorial with example programs
Obteniu més informació sobre els activadors de PL SQL, els seus tipus, ús i avantatges:
A la Transaccions SQL PL tutorial del Sèrie PL / SQL , hem après sobre les declaracions COMMIT, ROLLBACK i SAVEPOINTS.
En aquest article, explorarem els activadors de PL SQL i els seus avantatges, tipus i ús. Discutirem com crear, activar, habilitar i desactivar els activadors PL / SQL amb l'ajuda de programes d'exemple.
Comencem amb la discussió !!
Què aprendreu:
Activadors a PL / SQL
Un programa emmagatzemat que s’activa per defecte o per alguns esdeveniments s’anomena activador.
S'executa un activador a causa de les següents circumstàncies:
- Mitjançant una declaració DDL (Data Definition Language) com DROP, ALTER o CREATE.
- Mitjançant una declaració DML (Data Manipulation Language) com UPDATE, INSERT o DELETE.
- Mitjançant una acció de base de dades com SHUTDOWN, STARTUP, LOGOFF i LOGON.
Es pot establir un activador en un esquema, vista o base de dades que tingui un esdeveniment adjunt.
Avantatges dels desencadenants
A continuació es detallen:
- Capacitat per fer complir la integritat referencial.
- Capacitat de control.
- Possibilitat de registrar i conservar dades a les taules d'accés.
- Possibilitat d’aturar transaccions que no són vàlides.
- Capacitat per fer complir les funcions de seguretat.
- Possibilitat de produir valors de columna derivats per defecte.
Usos dels desencadenants
A continuació es detallen:
- Evita les transaccions incorrectes.
- Acumula informació sobre l'ús de la taula.
- Superviseu la informació crítica.
Tipus de desencadenants a PL / SQL
Els activadors es poden classificar segons els paràmetres. A continuació s’enumeren els tipus d’activadors:
# 1) Classificació al nivell d'activació.
- Activador de nivell ROW: S’executa per a cada registre actualitzat per una sentència DML.
- DECLARACIÓ Activador de nivell: Només s'executa una vegada per la sentència d'esdeveniment.
# 2) Classificació en el moment del disparador.
- ABANS del disparador: S'executa abans de l'esdeveniment específic que ha tingut lloc.
- DESPRÉS del disparador: S'executa després de l'esdeveniment específic que ha tingut lloc.
- EN lloc de l'activador: És un tipus d'activador especial i s'executa per a cada registre actualitzat per una sentència DML.
# 3) Classificació de l'esdeveniment activador.
- Activador de DML: S’executa si es realitza un esdeveniment DML com ara UPDATE, INSERT o DELETE.
- Activador DDL: S’executa si es realitza un esdeveniment DDL com DROP, ALTER o CREATE.
- Activador de la BASE DE DADES: S’executa si s’ha produït un esdeveniment de la base de dades com SHUTDOWN, STARTUP, LOGOFF i LOGON.
Crea activadors
Sintaxi per crear un activador:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Aquí,
- CREA (O REPLACE) TRIGGER trigger_n - Es tracta de crear, substituir o actualitzar un activador que tingui un nom trigger_n.
- DESPRÉS - Es tracta de determinar el moment en què es dispararà el disparador. L'INSTITUACIÓ DE és per crear un activador que tingui una vista.
- ELIMINA - Això és per executar les accions DML.
- (OF column_n) - Això és per esmentar el nom de la columna que es modificarà.
- (ON table_n) - Es tracta d’esmentar el nom de la taula que s’adjunta al disparador.
- (REFERÈNCIA DE VELL COM A NOU COM a n) - Això es fa per referir-se als valors vells i nous de la sentència DML com UPDATE, INSERT o DELETE.
- (PER A CADA FILA) - Això determina un activador de nivell de fila, és a dir, el disparador s'activarà per a cada fila que es modifiqui; en cas contrari, el disparador es dispararà una sola vegada quan s'executa la sentència SQL, que es coneix com a activador de nivell de taula.
- QUAN (condició) - Això proporciona una condició per a les files per a les quals s'executaria el disparador. Això només s’aplica als activadors de nivell de fila.
Considerem de nou una taula que s'anomena ESTUDIANT .
Creem ara un activador de nivell de fila per a la taula STUDENT que s'executaria mitjançant la sentència DML com UPDATE, INSERT o DELETE en aquesta taula. El disparador calcularà i mostrarà la diferència d'edat entre els valors actuals i els anteriors.
Implementació del codi per a la creació del disparador:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Sortida del codi anterior:
El codi anterior té algunes característiques importants. Es detallen a continuació:
- Per a un activador de nivell de taula, les adreces VELLES i NOVES no estan disponibles. Podem utilitzar aquestes referències per activar el nivell de registre.
- Si volem aplicar una altra consulta al mateix activador, hem d’utilitzar la paraula clau DESPRÉS com a activador que pot modificar una taula de nou només després que s’apliquin correctament les modificacions anteriors.
- El disparador comentat anteriorment s’executa abans de qualsevol acció DELETE, UPDATE o INSERT sobre la taula. Tanmateix, també podem dissenyar un activador que s'activi en una sola operació ( per exemple, Després de la inserció, s'executarà el disparador sempre que s'insereixi un registre amb l'ajut de l'operació INSERT a la taula).
Desencadenant desencadenants a PL SQL
Per activar l’activador anterior, hem de fer qualsevol operació DML, com ara DELETE, INSERT o UPDATE, a la taula. Inserim de nou alguns valors a la taula Student amb l'ajut de la consulta següent:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Un cop finalitzada l'operació INSERT a la taula Student, el disparador canvis_edat s'executa.
La sortida del codi de consulta:
Com que es crea un nou registre i l'edat anterior no està disponible, l'edat anterior i Diferència d’edat el càlcul és nul en la sortida anterior.
Ara, deixem-ho modifiqueu un registre amb la declaració UPDATE amb l'ajut de la consulta següent:
UPDATE student SET age = age + 1 WHERE code = 7;
Un cop s'hagi completat l'operació ACTUALITZACIÓ a la taula Student, el disparador canvis_edat s'executa.
El resultat de la consulta anterior:
Clàusula NOU I VELLA
S'utilitza una nova clàusula per emmagatzemar el nou valor de les columnes de la taula per a l'execució del disparador. S'utilitza en activadors de nivell rècord. S'utilitza una clàusula antiga per emmagatzemar el valor antic de les columnes de la taula per a l'execució del disparador. També s’utilitza en activadors de nivell rècord.
Per tant, la clàusula nova i antiga s'utilitza per mantenir i fer referència als valors nou i antic dins d'un cos activador.
Trigger compost
S'utilitza un disparador compost per definir les operacions de tots els punts de sincronització dins del cos del disparador. Ofereix la previsió de combinar totes les accions en diferents moments dins d’un cos activador.
A continuació s’enumeren els diversos punts de temps:
- Nivell DESPRÉS DE DECLARACIÓ
- ABANS DE FILAR nivell
- Nivell DESPRÉS DE FILA
- ABANS DE DECLARACIÓ nivell
Desactiva i activa el disparador
Podem activar i desactivar un activador amb l'ajut d'una instrucció DDL ALTER.
Sintaxi:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Aquí, trigger_n és el nom del disparador que volem activar o desactivar.
Ara desactivem el disparador amb l'ajut de la consulta següent:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
La sortida del codi de consulta:
Ara activem el mateix activador amb l'ajut de la consulta següent:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
La sortida del codi de consulta:
Preguntes i respostes freqüents
P # 1) Quants tipus de desencadenants existeixen a PL SQL?
Resposta: Hi ha dos tipus de desencadenants a PL / SQL. Són activadors a nivell de fila i activadors a nivell d’instruccions.
Q # 2) Quin tipus d'activador utilitza els classificadors nous i antics?
el millor descarregador de vídeo de youtube gratuït per a Windows 10
Resposta: Els classificadors antics i nous només es poden utilitzar amb activadors de nivell de fila. No són compatibles amb els activadors a nivell de sentència.
P # 3) Quina diferència hi ha entre activador nou i activador antic?
Resposta: Un nou activador proporciona una llista de les noves versions dels objectes de registre. Un activador antic proporciona una llista de versions antigues dels objectes de registre.
Q # 4) Què és un activador a nivell de fila a PL SQL?
Resposta: Un activador a nivell de fila només s'activa per a una fila a causa d'un esdeveniment. Per exemple, si la supressió es considera un esdeveniment desencadenant d'una taula, una sentència delete afecta dues files, el disparador es dispararà dues vegades.
P # 5) Què és un desencadenant? Expliqueu-ho amb un exemple.
Resposta: Un activador és un procediment emmagatzemat que es dispara per defecte si es produeix un incident a la base de dades. Per exemple, si s'insereix una fila a una taula o estem modificant alguns valors de la taula.
P # 6) Quins són els desencadenants posteriors?
Resposta: Els activadors posteriors s'activen després de l'execució d'una sentència DML, però abans de la confirmació a la base de dades. També és capaç de retrocedir la seva acció.
Conclusió
En aquest tutorial, hem comentat alguns conceptes bàsics de Triggers a PL SQL que són essencials per utilitzar-los durant la programació. A continuació, hem tractat els temes següents:
- Desencadenants.
- Tipus de desencadenants.
- Diverses operacions en disparadors.
<< PREV Tutorial | NEXT Tutorial >>