Ir para conteúdo

Arquivado

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

Daniel Rocha_12822

Trigger

Recommended Posts

Sou novo com sql. Situação : Tenho uma tb_reserva presciso fazer uma trigger onde antes do dados a ser inserido no banco a trigger verificar se a cnh do condutor tb_condutor e a mesma permitida pro veiculo na tb_veiculo, e se ja existir reserva feita no perido do horario na tb_reserva e se cnh esta com validade ok

ai da um rollback pra cancela a transação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua dúvida é como montar as queries para esta validação ou como montar a TRIGGER em si !?

 

De quaquer forma passe a descrição sumária das tabelas (campos e chaves) para facilitarca resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

trigger na table [dbo].[reserva] ante de inseri os dados.

Assim tenho table [dbo].[reserva] ante de inseri os dados fazer as seguintes verificações se [condutor_cnh_id] da table [dbo].[condutor] e igual a permitida table [dbo].[veiculo], e se [condutor_cnh_vencimento] da table [dbo].[condutor] não da vencida, e se [res_hora_saida] da [res_data_saida] ja esta reservada nao pode fase uma reserva pro mesmo veiculo no perido entre [res_hora_saida] e [res_hora_retorno] na mesma [res_data_saida]. e se table [dbo].[movimentacao] [mov_data_saida] [date] [mov_hora_saida] estiver em movimento não fará a reserva ai para transação com

rollback e printa uma mesagem de erro.na tela.


CREATE TABLE [dbo].[RESERVA](
    [RES_ID] [int] IDENTITY(1,1) NOT NULL,
    [RES_VEIC_ID] [int] NOT NULL,
    [RES_CONDUTOR_ID] [int] NOT NULL,
    [RES_DATA_SAIDA] [date] NOT NULL,
    [RES_HORA_SAIDA] [time](7) NOT NULL,
    [RES_ORIG_CIDADE_ID] [int] NULL,
    [RES_DEST_CIDADE_ID] [int] NOT NULL,
    [RES_DATA_RETORNO] [date] NOT NULL,
    [RES_HORA_RETORNO] [time](7) NOT NULL,
    [RES_STATUS] [char](1) NULL,
CREATE TABLE [dbo].[CONDUTOR](
    [CONDUTOR_ID] [int] IDENTITY(1,1) NOT NULL,
    [CONDUTOR_EMP_ID] [int] NULL,
    [CONDUTOR_NOME] [varchar](80) NOT NULL,
    [CONDUTOR_GARGO_ID] [int] NULL,
    [CONDUTOR_CNH_ID] [int] NOT NULL,
    [CONDUTOR_CNH_VENCIMENTO] [date] NOT NULL,
    [CONDUTOR_CNH_NUM] [varchar](16) NULL,
    [CONDUTOR_CPF] [char](11) NULL,
    [CONDUTOR_DATA_NASC] [date] NULL,
    [CONDUTOR_CELULAR] [char](11) NOT NULL,
    [CONDUTOR_FONE] [char](11) NULL,
    [CONDUTOR_EMAIL] [varchar](100) NOT NULL,
    [CONDUTOR_STATUS] [char](1) NULL,
    [CONDUTOR_DATA_CAD] [date] NULL,
    [CONDUTOR_LOGRADOURO] [varchar](80) NULL,
    [CONDUTOR_LOGRADOURO_NUM] [int] NOT NULL,
    [CIDADE_ID] [int] NULL,
    [CONDUTOR_CEP] [char](8) NULL,
CREATE TABLE [dbo].[VEICULO](
    [VEIC_ID] [int] IDENTITY(1,1) NOT NULL,
    [VEIC_MOD_ID] [int] NOT NULL,
    [VEIC_ANO] [date] NOT NULL,
    [VEIC_PLACA] [char](7) NOT NULL,
    [VEIC_RENAVAN] [varchar](11) NOT NULL,
    [VEIC_COR] [varchar](20) NOT NULL,
    [VEIC_KM] [numeric](18, 0) NOT NULL,
    [VEIC_COMB_ID] [int] NOT NULL,
    [VEIC_MEDIA_CONS_A] [numeric](18, 0) NULL,
    [VEIC_MEDIA_CONS_G] [numeric](18, 0) NULL,
    [VEIC_MEDIA_CONS_D] [numeric](18, 0) NULL,
    [VEIC_EMP_ID] [int] NOT NULL,
    [VEIC_VENC_EXTINTOR] [date] NOT NULL,
    [VEIC_VENC_SEGURO_O] [date] NOT NULL,
    [VEIC_VENC_IPVA] [date] NOT NULL,
    [VEIC_VENC_SEGURADORA] [date] NOT NULL,
    [VEIC_TROCA_OLEO] [date] NOT NULL,
    [VEIC_CNH_ID] [int] NULL,

 

CREATE TABLE [dbo].[MOVIMENTACAO](
    [MOV_ID] [int] IDENTITY(1,1) NOT NULL,
    [MOV_CONDUTOR_ID] [int] NOT NULL,
    [MOV_VEIC_ID] [int] NOT NULL,
    [MOV_DATA_SAIDA] [date] NOT NULL,
    [MOV_HORA_SAIDA] [time](7) NOT NULL,
    [MOV_KM_SAIDA] [numeric](18, 0) NOT NULL,
    [MOV_DATA_RETORNO] [date] NULL,
    [MOV_HORA_RETORNO] [time](7) NULL,
    [MOV_KM_RETORNO] [numeric](18, 0) NULL,
    [MOV_OBS] [varchar](200) NULL,
    [MOV_ORIGEM] [int] NOT NULL,
    [MOV_DESTINO] [int] NOT NULL,
    [MOV_PREVISAO_VOLTA_HORA] [time](7) NULL,
    [MOV_PREVISAO_VOLTA_DATA] [date] NULL,
    [MOV_TIPO_MOVI_ID] [int] NULL,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, primeiro tente fazer a query que verifica se o horário está disponível , talvez você tenha de usar functions de datetime. Atenção pois o intervalo deve ser testado, este tópico deve te ajudar.

 

Segundo tente a query que verifica que o Condutor é habilitado ao veiculo, pelo que entendi a tabela VEICULO é que tem esta informação.

 

Com base nisto creio que fica simples montar a trigger.

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.