Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.