Boa tarde.
Sou novo aqui no fórum e precisado da ajuda de vocês!
Tenho um projeto de Java pra WEB onde usamos JDBC para criação de um banco no Phpmyadmin, o CRUD já está feito com todas as DAO e Beans. Um dos requisitos deste projeto é que o módulo deve ter uma data de validade (atributo já colocado na tabela Modulo), quando a data de validade dele vencer, o status do módulo deve ser trocado para inativo, ou seja, mudar o valor de 1 para 0, para que ele possa fechar sozinho, caso o professor esqueça de fecha-lo.
A logica que eu pensei foi na seguinte, se a data atual do sistema for depois da validade do módulo, eu mudo o modu_status para 0.
Só que essa Procedure tem que ser disparada toda 00:00, não é algo que eu consiga controlar pelo código no Java, é algo que o banco tenha que fazer sozinho.
O problema é que eu nunca fiz uma Procedure, alguém tem algum esqueleto que faça algo parecido e eu possa adaptar para o meu código ?
Uma Procedure é a unica maneira de fazer isso ? Posso fazer de outra forma ?
Abaixo tem as Querys de criação do banco de dados, desde já agradeço a atenção de vocês.
Pergunta
Zeusyoshino
Equipe.
Boa tarde.
Sou novo aqui no fórum e precisado da ajuda de vocês!
Tenho um projeto de Java pra WEB onde usamos JDBC para criação de um banco no Phpmyadmin, o CRUD já está feito com todas as DAO e Beans. Um dos requisitos deste projeto é que o módulo deve ter uma data de validade (atributo já colocado na tabela Modulo), quando a data de validade dele vencer, o status do módulo deve ser trocado para inativo, ou seja, mudar o valor de 1 para 0, para que ele possa fechar sozinho, caso o professor esqueça de fecha-lo.
A logica que eu pensei foi na seguinte, se a data atual do sistema for depois da validade do módulo, eu mudo o modu_status para 0.
Só que essa Procedure tem que ser disparada toda 00:00, não é algo que eu consiga controlar pelo código no Java, é algo que o banco tenha que fazer sozinho.
O problema é que eu nunca fiz uma Procedure, alguém tem algum esqueleto que faça algo parecido e eu possa adaptar para o meu código ?
Uma Procedure é a unica maneira de fazer isso ? Posso fazer de outra forma ?
Abaixo tem as Querys de criação do banco de dados, desde já agradeço a atenção de vocês.
CREATE TABLE Professor(
prof_username VARCHAR(20) NOT NULL,
prof_senha VARCHAR(20) NOT NULL,
prof_status INT(1) NOT NULL,
prof_senhavenc DATE NOT NULL,
prof_nome VARCHAR(50),
prof_especialidade VARCHAR(30) NOT NULL,
prof_nivel VARCHAR(3) NOT NULL,
prof_cargahoraria INT (2) NOT NULL,
CONSTRAINT prof_username_pk PRIMARY KEY (prof_username)
);
CREATE TABLE Secretaria(
secr_username VARCHAR(20) NOT NULL,
secr_senhavenc DATE NOT NULL,
secr_status INT(1) NOT NULL,
secr_senha VARCHAR(20),
secr_nome VARCHAR(50),
CONSTRAINT secr_username_pk PRIMARY KEY (secr_username)
);
CREATE TABLE Aluno(
alun_ra INT(6) NOT NULL,
alun_nome VARCHAR(50) NOT NULL,
alun_senha VARCHAR(20) NOT NULL,
alun_condpaga VARCHAR(20),
alun_datamat DATE,
alun_senhavenc DATE,
alun_status INT(1),
CONSTRAINT alun_ra_pk PRIMARY KEY (alun_ra)
);
CREATE TABLE Solicitacao(
soli_cod INT(4) NOT NULL,
soli_dataped DATE NOT NULL,
soli_status INT(1) NOT NULL,
soli_alun_ra INT(6) NOT NULL,
soli_dataemi DATE NOT NULL,
CONSTRAINT soli_cod_pk PRIMARY KEY (soli_cod)
);
CREATE TABLE ProfessorModulo(
pm_prof_user VARCHAR(20) NOT NULL,
pm_cod INT NOT NULL,
pm_modu_cod INT NOT NULL,
CONSTRAINT pm_cod_pk PRIMARY KEY (pm_cod),
CONSTRAINT pm_prof_user_fk FOREIGN KEY (pm_prof_user) REFERENCES Professor (prof_username)
);
CREATE TABLE Curso(
curs_cod INT(4) NOT NULL,
curs_nome VARCHAR(20) NOT NULL,
curs_idioma VARCHAR(20) NOT NULL,
CONSTRAINT curs_cod PRIMARY KEY (curs_cod)
);
CREATE TABLE Modulo(
modu_cod INT(4) NOT NULL,
modu_nome VARCHAR(100),
modu_nivel VARCHAR(3) NOT NULL,
modu_horario VARCHAR(50),
modu_status INT(1),
modu_conteudo VARCHAR(100),
modu_preco FLOAT(7,2),
modu_cargahoraria INT(2),
modu_pubalvo VARCHAR(20),
modu_validade DATE,
modu_curs_cod INT(4),
CONSTRAINT modu_cod_pk PRIMARY KEY (modu_cod),
CONSTRAINT modu_curs_cod_fk FOREIGN KEY (modu_curs_cod) REFERENCES Curso (curs_cod)
);
CREATE TABLE Parcela(
parc_cod INT(4) NOT NULL,
parc_datavenc DATE NOT NULL,
parc_precototal FLOAT(7,2) NOT NULL,
parc_desconto FLOAT(7,2) NOT NULL,
parc_precofinal FLOAT(7,2) NOT NULL,
parc_num INT(4) NOT NULL,
parc_alun_ra INT(6) NOT NULL,
parc_modu_cod INT(4) NOT NULL,
CONSTRAINT parc_cod_pk PRIMARY KEY (parc_cod),
CONSTRAINT parc_alun_ra_fk FOREIGN KEY (parc_alun_ra) REFERENCES Aluno (alun_ra),
CONSTRAINT parc_modu_cod_fk FOREIGN KEY (parc_modu_cod) REFERENCES Modulo (modu_cod)
);
CREATE TABLE AlunoModulo(
am_cod INT(4) NOT NULL,
am_alun_ra INT(6) NOT NULL,
am_modu_cod INT(4) NOT NULL,
am_status INT(1) NOT NULL,
am_faltas INT(3) NOT NULL,
am_conceparc CHAR(1) NOT NULL,
am_concefinal CHAR(1) NOT NULL,
am_datamat DATE NOT NULL,
CONSTRAINT am_cod_pk PRIMARY KEY (am_cod),
CONSTRAINT am_alun_ra_fk FOREIGN KEY (am_alun_ra) REFERENCES Aluno (alun_ra),
CONSTRAINT am_modu_cod_fk FOREIGN KEY (am_modu_cod) REFERENCES Modulo (modu_cod)
);
Editado por ZeusyoshinoLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.