Trigger: é chamada quando uma tabela é excitada por um dos comandos: INSERT, DELETE ou UPDATE.
Trigger = gatilho, disparador;====================== create database locadora;use locadora;
create table filmes(
cod_fil int not null auto_increment,
titulo varchar(255),
constraint pk_filmes
primary key(cod_fil)
) engine=innodb;
create table clientes(
cod_cli int not null auto_increment,
nome varchar(255),
constraint pk_clientes
primary key(cod_cli)
) engine=innodb;
create table filmes_clientes(
cod_fil int not null,
cod_cli int not null,
constraint fk_filmes
foreign key(cod_fil)
references filmes(cod_fil),
constraint fk_clientes
foreign key(cod_cli)
references clientes(cod_cli)
) engine=innodb;create table tblog(
cod int not null auto_increment,
filme int not null,
cliente int not null,
retirada date not null,
devolucao date,
primary key(cod)
) engine=myisam;delimiter |
CREATE TRIGGER tralugar
before insert ON filmes_clientes
FOR EACH ROW BEGIN
insert into tblog(filme,cliente,retirada)
values(new.cod_fil,new.cod_cli,now()); END;
|
delimiter ;
delimiter |
CREATE TRIGGER trdevolver
after delete ON filmes_clientes
FOR EACH ROW BEGIN
update tblog set devolucao=now()
where filme=old.cod_fil
and cliente=old.cod_cli;
END;
|
delimiter ;/// DADOS DE TESTES: insert into filmes values(1,"matrix"),(2,"MIB");
insert into clientes values(1,"joao"),(2,"Pedro");