Implementación de Triggers

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

IMPLEMENTACIN DE TRIGGERS DEFINICION

Son objetos relacionados con tablas y almacenados en la base de datos, que se ejecutan o se muestran cuando sucede un evento sobre sus tablas asociadas.
CONSIDERACIONES A TENER EN CUENTA.

Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE; que modifican los datos de una tabla. Se pueden ejecutar antes (BEFORE) y/o despus (AFTER) de que sean ejecutados los datos. Tienen dos palabras clave, OLD y NEW; que se refieren a los valores que tienen las columnas an tes y despus de la modificacin ; los INSERT permiten NEW, los DELETE OLD y UPDATE permiten ambos. Para nombrar un triggers se debe seguir una convencin a fin de reconocer de manera ms fcil sobre que tabla y evento
Sintaxis general

CREATE TRIGGER <nombre> {BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON <tablename> FOR EACH ROW BEGIN <sentenciasSQL> END;

Triggers de insercin

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2)); mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account -> FOR EACH ROW SET @sum = @sum + NEW.amount;

delimiter\\ create trigger cotrcrr after insert on carrera for each row begin insert into audi values(new.nomcrr,curdate(),curtime()); end\\ delimiter; delimiter\\ create trigger tgrmarca after insert on Marca for each row begin insert into AudtMarca values(new.nommrc,curdate()); end\\ delimiter;

Triggers de actualizacin

CREATE TABLE UPDATEAUDIT( nmantvarchar(50) not null, fech date not null, nmactvarchar(50) not null ) engine=innodb;

delimiter\\ CREATE TRIGGER UPDCARRERA AFTER UPDATE ON CARRERA FOR EACH ROW BEGIN insert into UPDATEAUDIT values(old.nomcrr,curdate(),new.nomcrr); END\\ delimiter;

delimiter // CREATE TRIGGER carrera_bu before UPDATE ON carrera FOR each row begin SET @nombreViejo = OLD.nomcrr; SET @nombreNuevo = NEW.nomcrr; end//

updatecarrera set nomcrr='Derecho' wherecodcrr='DRC' select @nombreViejo Anterior,@nombreNuevo Actual


Triggers de eliminacin Implementacin de cursores

Create procedure curdemo() Begin Declare done int default 0; Declare char(16); Declare cur2 Cursor for select i, from test.t2; Declare continue handler for sqlstate 02000 set done=1; Open cur1; Open cur2; Repeat Fetch cur1 into a,b; Fetch cur2 into c; If not done then If b<c then Insert into test.t3 values(a,b); Else Insert into test.t3 values(a,b); End if; End if;

Until done end repeat; Close cur1; Close cur2; End; Delimiter;; Drop procedure if exists micursor;; Create procedure micursor() Begin Declare done Boolean default false; Declare uid integer; Declare newdate integer; Declare c1 cursor for select id, timestamp from employers order by id asc; Declare continue handler for sqlstate '02000' set done = true; open c1; c1_loop: LOOP fetch c1 into uid,newdate; IF `done` THEN LEAVE c1_loop; END IF; Update calendar set timestamp = newdate where id=uid; End Loop c1_loop; Close c1; END ;;

También podría gustarte