Ir para conteúdo
MauVirtual

Usar Trigger? Procedure? Ambas?

Recommended Posts

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;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Guga Alves
      Preciso criar uma chave estrangeira, porém o seguinte erro esta retornando Erro SQL 1452.

      Coloquei uma imagem anexada, se alguém puder clarear minha mente sobre o problema, ficarei grato.

      Obrigado!
       
       

    • Por Badtsmaru
      Olá, amigos, tudo bem? Estou fazendo um exercício em sala de aula de uma tabela q deverá ser normalizada nas 3 formas normais. Estou com uma dificuldade absurda para entender o assunto, então gostaria de pedir a ajuda de vocês nesse exercício em questão. 
      O professor pediu para fazer as 3 formas normais da tabela a seguir.
       
       

       
      Bom, a primeira forma normal seria a tabela sem campos multivalorados e sem campos compostos. Na tabela que postei, eu não encontrei nenhum campo composto ou multivalorado. Isso significa que essa tabela já esta na primeira forma (1FN) normal? Não preciso mudar mais nada? Ficaria assim?
       
      1FN
      (CdEqu, NmEquip, NmVend, CdVend, CdSec, NmSec, VlTotltVen, VlUnitVen, VlUnitVen, Qtd, DtReq, NumReq, CdMat, NmMateria, VlUnitEst, CdGrupo, NmGrupo)
       
      Alguém saberia me dizer como ficaria a 2FN? O professor mal passou o assunto e ja pediu uma tabela desse nível. Ta meio complicado entender, se alguém pudesse ajudar explicando seria legal. 
       
       
       
       
       
    • Por josenilson
      Olá pessoal , 
       
      Tenho um sistema no qual quero disponibilizar para varias empresas, porem quero separar os dados criando um banco de dados para cada empresa, mas não sei com fazer essa interação dinamicamente,  eu uso nos meus projetos um arquivo config.inc.php contendo  a conexão e um auto load com as pastas contendo as class. 
       
      No primeiro banco de dados  criei os acessos de usurário ligados a sua determinada empresa, ate ai tudo bem , porem uma vez o usuário logado como lido com essa situação, o usuário da empresa X deve gravar e consulte os dados do seu determinado banco e o usuário da empresa Y a mesma coisa . 
       
      Minha limitação esta sendo com o arquivo config imaginei de criar um para cada empresa apontando para seu determinado banco mas assim não deu certo . 
    • Por netocazuza
      Tenho um projeto, já funcionando, com vários bancos de dados e várias tabelas. No momento, surgiu a necessidade de registar data e hora da gravação de dados em algumas tabelas. Só preciso que fique registrado na tabela a data e hora das gravações. Fui em cada uma delas e criei um campo do tipo datetime e estou tentando inserir um NOW() na gravação, mas não estou acertando com a sintaxe. Alguém tem uma sugestão? Basta registrar a data e hora na tabela, sem a necessidade de acrescentar textbox no formulário. Exemplo, eu tenho um formulário onde se registra os turnos (manhã, tarde e noite). Tenho apenas um textbox no formulário chamado turno, e um código que guarda esse valor (varchar) numa tabela chamada junho, que só tinha originalmente um campo chamado turno, funcionando. Criei mais um campo chamado cadastramento, do tipo datetime, pra guardar data e hora da gravação desse novo turno, e não estou acertando com a sintaxe. 
    • Por b0t.exe
      Boa tarde galera...
      estou desenvolvendo um projeto e estou com problema na criação de outro formulário, sempre que clico em Enviar, da erro 404
       
      HTML:
      <form name="ouvidoria" action="invoice.php" method="POST"> <div class="form-group row"> <div class="col-md-12"> <label for=""> 1 - Avaliação Agendamento / Recepção: </label> </br> <label class="checkbox-inline"><input type="checkbox" name="bomruimum" value=""> Ótimo</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimum" value=""> Bom</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimum" value=""> Regular</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimum" value=""> Ruim</label> </br> <label for="comment"> Considerações:</label> <textarea class="form-control" rows="5" name="agendamento" id="comment"></textarea> </div> </div> <div class="form-group row"> <div class="col-md-12"> <label for=""> 2 - Avaliação dos profissionais que lhe atenderam: </label> </br> <label class="checkbox-inline"><input type="checkbox" name="bomruimdois" value=""> Ótimo</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimdois" value=""> Bom</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimdois" value=""> Regular</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimdois" value=""> Ruim</label> </br> <label for="comment"> Considerações:</label> <textarea class="form-control" rows="5" name="profissionais" id="comment"></textarea> </div> </div> <div class="form-group row"> <div class="col-md-12"> <label for=""> 3 - Avaliação da qualidade dos serviços: </label> </br> <label class="checkbox-inline"><input type="checkbox" name="bomruimtres" value=""> Ótimo</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimtres" value=""> Bom</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimtres" value=""> Regular</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimtres" value=""> Ruim</label> </br> <label for="comment"> Considerações:</label> <textarea class="form-control" rows="5" name="qualidade" id="comment"></textarea> </div> </div> <div class="form-group row"> <div class="col-md-12"> <label for=""> 4 - Avaliação Geral do Atendimento do Estabelecimento: </label> </br> <label class="checkbox-inline"><input type="checkbox" name="bomruimquatro" value=""> Ótimo</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimquatro" value=""> Bom</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimquatro" value=""> Regular</label> <label class="checkbox-inline"><input type="checkbox" name="bomruimquatro" value=""> Ruim</label> </br> <label for="comment"> Considerações:</label> <textarea class="form-control" rows="5" name="geral" id="comment"></textarea> </div> </div> <div class="form-group row"> <div class="col-md-12"> <label for=""> 5 - Sugestões e Observações: </label> <textarea class="form-control" rows="5" name="sugestoes" id="comment"></textarea> <input type="submit" value="Concluir" name="enviar"> </div> </div> </form> PHP:
      <?php $bomruimum = $_POST['bomruimum']; $agendamento = $_POST['agendamento']; $bomruimdois = $_POST['bomruimdois']; $profissionais = $_POST['profissionais']; $bomruimtres = $_POST['bomruimtres']; $qualidade = $_POST['qualidade']; $bomruimquatro = $_POST['bomruimquatro']; $geral = $_POST['geral']; $sugestoes = $_POST['sugestoes']; $strcon = mysqli_connect('XXXXXXXXX','XXXXXXXXX','XXXXXXXXX','XXXXXXXXX') or die('Erro ao conectar ao banco de dados'); $sql = "INSERT INTO ouvidoria(bomruimum, agendamento, bomruimdois, profissionais, bomruimtres, qualidade, bomruimquatro, geral, sugestoes) VALUES('$bomruimum', '$agendamento', '$bomruimdois', '$profissionais', '$bomruimtres', '$qualidade', '$bomruimquatro', '$geral', '$sugestoes') "; mysqli_query($strcon,$sql) or die("Erro ao tentar cadastrar registro"); mysqli_close($strcon); echo "Cliente cadastrado com sucesso!"; echo "<a href='#'>Clique aqui para realizar um novo cadastro</a><br>"; echo "<a href='#'>Clique aqui para realizar uma consulta</a><br>"; ?> Por favor, conto com a ajuda de vocês...
×

Informação importante

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