Jump to content
Sign in to follow this  
Daniel Rocha_12822

trigger validar antes de um insert

Recommended Posts

ola amigos sou novo MySQL

estou criando uma trigger em banco na seguinte tabela reserva que antes de se inserido ela faça uma validação.

 

CREATE DEFINER=`root`@`localhost` TRIGGER `testecarros`.`reserva_BEFORE_INSERT` BEFORE INSERT ON `reserva` FOR EACH ROW
BEGIN
declare v_condutor_id int (11);
declare v_VALIDA_CONDUTOR_CNH int (11);
set v_condutor_id = new.condutor_id;
set v_VALIDA_CONDUTOR_CNH = (select c.id_condutor from condutor c
inner join veiculo v on v.Id_cnh = c.id_cnh
where c.Id_cnh <= v.Id_cnh or c.vencimento_cnh <= current_date() and c.id_condutor = c.id_condutor );
if v_VALIDA_CONDUTOR_CNH <> v_condutor_id then
set v_condutor_id = 0;
end if;
END

 

( quando o novo registro não atender as condição do select ela retorna um mensagem de erro "CNH vencida ou CNH não permitida para este veiculo )

 

*****************

CREATE TABLE `cnh` (
`Id_cnh` int(11) NOT NULL AUTO_INCREMENT,
`cnh_nome` char(2) DEFAULT NULL,
PRIMARY KEY (`Id_cnh`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
***********************************
CREATE TABLE `condutor` (
`id_condutor` int(11) NOT NULL AUTO_INCREMENT,
`nome_condutor` varchar(80) DEFAULT NULL,
`id_departamento` int(11) DEFAULT NULL,
`vencimento_cnh` date DEFAULT NULL,
`telefone` varchar(11) DEFAULT NULL,
`email` varchar(80) DEFAULT NULL,
`id_cnh` int(11) DEFAULT NULL,
PRIMARY KEY (`id_condutor`),
KEY `id_departamento` (`id_departamento`),
KEY `id_cnh` (`id_cnh`),
CONSTRAINT `condutor_ibfk_1` FOREIGN KEY (`id_departamento`) REFERENCES `departamento` (`id_departamento`),
CONSTRAINT `condutor_ibfk_2` FOREIGN KEY (`id_cnh`) REFERENCES `cnh` (`Id_cnh`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
*********************************************************
CREATE TABLE `cidade` (
`id_cidade` int(11) NOT NULL AUTO_INCREMENT,
`Cidade` varchar(50) DEFAULT NULL,
`uf` int(11) DEFAULT NULL,
PRIMARY KEY (`id_cidade`),
KEY `uf` (`uf`),
CONSTRAINT `cidade_ibfk_1` FOREIGN KEY (`uf`) REFERENCES `uf` (`id_uf`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;
****************************************
****************************************
CREATE TABLE `veiculo` (
`id_veiculo` int(11) NOT NULL AUTO_INCREMENT,
`tipo_veiculo` int(11) DEFAULT NULL,
`placa` char(7) DEFAULT NULL,
`cor` varchar(20) DEFAULT NULL,
`km_veiculo_inical` int(11) DEFAULT NULL,
`id_cnh` int(11) DEFAULT NULL,
PRIMARY KEY (`id_veiculo`),
KEY `tipo_veiculo` (`tipo_veiculo`),
KEY `id_cnh` (`id_cnh`),
CONSTRAINT `veiculo_ibfk_1` FOREIGN KEY (`tipo_veiculo`) REFERENCES `tipoveiculo` (`id_tipoveiculo`),
CONSTRAINT `veiculo_ibfk_2` FOREIGN KEY (`id_cnh`) REFERENCES `cnh` (`Id_cnh`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;
*************************************************
CREATE TABLE `reserva` (
`id_reseva` int(11) NOT NULL AUTO_INCREMENT,
`veiculo` int(11) DEFAULT NULL,
`data_reserva` date DEFAULT NULL,
`hora_reserva` time DEFAULT NULL,
`previsao_volta` date DEFAULT NULL,
`previsao_hora` time DEFAULT NULL,
`destino` int(11) DEFAULT NULL,
`cancela` char(1) DEFAULT NULL,
`baixar_reserva` int(11) DEFAULT NULL,
`obs` varchar(255) DEFAULT NULL,
`condutor_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id_reseva`),
KEY `veiculo` (`veiculo`),
KEY `destino` (`destino`),
KEY `baixar_reserva` (`baixar_reserva`),
KEY `condutor_id` (`condutor_id`),
CONSTRAINT `reserva_ibfk_1` FOREIGN KEY (`veiculo`) REFERENCES `veiculo` (`id_veiculo`),
CONSTRAINT `reserva_ibfk_2` FOREIGN KEY (`destino`) REFERENCES `cidade` (`id_cidade`),
CONSTRAINT `reserva_ibfk_3` FOREIGN KEY (`baixar_reserva`) REFERENCES `tipobaixa` (`id_tipo_baixa`),
CONSTRAINT `reserva_ibfk_4` FOREIGN KEY (`condutor_id`) REFERENCES `condutor` (`id_condutor`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.