Usar Trigger? Procedure? Ambas?
Pessoal, estou perdido tenho a seguinte tarefa abaixo, mas usando a trigger não posso dar o select ela nao aceita, e não sei se uso procedure, triger, ambas, sei que essa parte deveria ser feito pela aplicação, mas o professor quer essa apresentação somente em BD.
compare se a data e hora da viagem e o motorista e viatura estão disponíveis antes de incluir no banco de dados,
Entao digamos que a viatura Gol tem uma viagem com o motorista Carlos dia 22/03/2018 as 11:00 com termino no mesmo dia porem na hora 17:00 e suponhamos que alguem quera cadastra a viagem com o mesmo motorista a mesma viatura no mesmo dia porem no horario do 12:00, não poderia ser cadastrado já que a viatura e motorista estariam ocupados. Estão preci ser checado se a viatura está disponivel, se o motorista está disponivel em um intervalo de dia e hora, pois poderam acontecer viagens de mais de um dia.
Abaixo segue meu código sou bem iniciante e toda ajuda seria muito bem vinda.
Já criei um posto sobre isso, mas mudei a tabela e naquele post não consegui resolver
agredeço a ajuda, batendo o desespero já
CREATE TABLE DADOSPESSOAS(
IDDADOSPESSOAS INT PRIMARY KEY AUTO_INCREMENT,
NOME VARCHAR(45) NOT NULL,
EMAIL VARCHAR(45) UNIQUE NOT NULL,
NIVEL CHAR(1) NOT NULL,
DATANASCIMENTO DATE NOT NULL,
SEXO CHAR(1) NOT NULL,
CPF CHAR(14) UNIQUE NOT NULL,
CELULAR VARCHAR(14) UNIQUE NOT NULL,
CEP CHAR (9) NOT NULL,
RUA VARCHAR(30) NOT NULL,
NUMERO VARCHAR(8) NOT NULL,
BAIRRO VARCHAR(25) NOT NULL,
CIDADE VARCHAR(40) NOT NULL,
ESTADO CHAR(2) NOT NULL
);
CREATE TABLE MOTORISTA (
IDMOTORISTA INT PRIMARY KEY AUTO_INCREMENT,
NUMEROREGISTRO VARCHAR(10) UNIQUE NOT NULL,
VALIDADE DATE NOT NULL,
ID_DADOSPESSOAS INT
);
CREATE TABLE ADMIN(
IDADMIN INT PRIMARY KEY AUTO_INCREMENT,
SENHA VARCHAR(12) NOT NULL,
ID_DADOSPESSOAS INT
);
CREATE TABLE VIATURA (
IDVIATURA INT PRIMARY KEY AUTO_INCREMENT,
TIPOVEICULO VARCHAR(45) NOT NULL,
MARCA VARCHAR(25) NOT NULL,
MODELO VARCHAR(25) NOT NULL,
COR VARCHAR(25) NOT NULL,
ANOFABRICACAO CHAR(4) NOT NULL,
PLACA CHAR(8) UNIQUE NOT NULL,
RENAVAN CHAR(11) UNIQUE NOT NULL,
PASSAGEIROS CHAR(2) NOT NULL
);
CREATE TABLE VIAGENS (
IDVIAGENS INT PRIMARY KEY AUTO_INCREMENT,
CIDADE VARCHAR(25) NOT NULL,
DATAHORAINICIO DATETIME NOT NULL,
DATAHORAFINAL DATETIME NOT NULL,
COR VARCHAR(15) NOT NULL,
CEP CHAR(9) NOT NULL,
RUA VARCHAR(30) NOT NULL,
NUMERO VARCHAR(8) NOT NULL,
BAIRRO VARCHAR(25) NOT NULL,
ESTADO CHAR(2) NOT NULL,
DESCRICAO VARCHAR(200),
ID_DADOSPESSOAS INT,
ID_MOTORISTA INT,
ID_VIATURA INT
);
CREATE TABLE PASSAGEIRO (
IDPASSAGEIRO INT PRIMARY KEY AUTO_INCREMENT,
ID_DADOSPESSOAS INT ,
ID_VIAGEM INT
);
ALTER TABLE VIAGENS
ADD CONSTRAINT FK_DADOSPESSOAS_VIAGENS
FOREIGN KEY (ID_DADOSPESSOAS)
REFERENCES DADOSPESSOAS(IDDADOSPESSOAS) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VIAGENS
ADD CONSTRAINT FK_MOTORISTA_VIAGENS
FOREIGN KEY (ID_MOTORISTA)
REFERENCES MOTORISTA(IDMOTORISTA)ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE VIAGENS
ADD CONSTRAINT FK_VIATURA_VIAGENS
FOREIGN KEY (ID_VIATURA)
REFERENCES VIATURA(IDVIATURA)ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE MOTORISTA
ADD CONSTRAINT FK_DADOSPESSOAS_MOTORISTA
FOREIGN KEY (ID_DADOSPESSOAS)
REFERENCES DADOSPESSOAS(IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE ADMIN
ADD CONSTRAINT FK_DADOSPESSOAS_ADMIN
FOREIGN KEY (ID_DADOSPESSOAS)
REFERENCES DADOSPESSOAS(IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PASSAGEIRO
ADD CONSTRAINT FK_DADOSPESSOAS_PASSAGEIRO
FOREIGN KEY (ID_DADOSPESSOAS)
REFERENCES DADOSPESSOAS (IDDADOSPESSOAS)ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE PASSAGEIRO
ADD CONSTRAINT FK_VIAGENS_PASSAGEIRO
FOREIGN KEY (ID_VIAGEM)
REFERENCES VIAGENS (IDVIAGENS)ON DELETE CASCADE ON UPDATE CASCADE;Discussão (0)
Carregando comentários...