Quero criar um trigger para este bd.

MySQL

12/09/2006

Pessoal queria criar uma trigger para preencher a tab_nota, logo após eu tenha cadastrado a tab_aluno. Peço a ajuda de vocês.. obrigado

Função da Trigger:

Na tab_nota seria cadastrado um aluno para todas as matérias de seu curso EX:

Matricula | materia
406010 | portugues
406010 | matematica
102020 | geografia
102020 | ciencias

Banco de dados:
----------------------------------------------------------
CREATE TABLE Tab_curso (
codigo INT NOT NULL AUTO_INCREMENT,
nome VARCHAR(45) NULL,
PRIMARY KEY(codigo)
)
TYPE=InnoDB;

CREATE TABLE Tab_disciplina (
Codigo INT NOT NULL,
Tab_curso_codigo INT NOT NULL,
Nome VARCHAR(45) NULL,
PRIMARY KEY(Codigo),
INDEX Tab_disciplina_FKIndex1(Tab_curso_codigo),
FOREIGN KEY(Tab_curso_codigo)
REFERENCES Tab_curso(codigo)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)
TYPE=InnoDB;

CREATE TABLE Tab_aluno (
Matricula INT(10) NOT NULL AUTO_INCREMENT,
Tab_curso_codigo INT NOT NULL,
Nome VARCHAR(45) NOT NULL,
Datanasc DATE NOT NULL,
Foto BLOB NULL,
CPF INT(12) NULL,
RG INT(15) NOT NULL,
Tel INT(15) NULL,
Endereco VARCHAR(60) NOT NULL,
Bairro VARCHAR(30) NULL,
Cidade VARCHAR(30) NOT NULL,
UF VARCHAR(2) NULL,
Cep INT(10) NOT NULL,
Senha CHAR(6) NULL,
Responsavel VARCHAR(45) NULL,
RG_resp INT(15) NULL,
CPF_resp INT(12) NULL,
Tel_resp INT(15) NULL,
PRIMARY KEY(Matricula),
INDEX Tab_aluno_FKIndex1(Tab_curso_codigo),
FOREIGN KEY(Tab_curso_codigo)
REFERENCES Tab_curso(codigo)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)
TYPE=InnoDB;

CREATE TABLE Tab_nota (
Tab_aluno_Matricula INT(10) NOT NULL,
Tab_disciplina_Codigo INT NOT NULL,
nota1 INT(3) NULL,
nota2 INT(3) NULL,
nota3 INT(3) NULL,
nota4 INT(3) NULL,
notaprovafinal INT(3) NULL,
nota2epoca INT(3) NULL,
PRIMARY KEY(Tab_disciplina_Codigo, Tab_aluno_Matricula),
INDEX Tab_nota_FKIndex1(Tab_disciplina_Codigo),
INDEX Tab_nota_FKIndex2(Tab_aluno_Matricula),
FOREIGN KEY(Tab_disciplina_Codigo)
REFERENCES Tab_disciplina(Codigo)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
FOREIGN KEY(Tab_aluno_Matricula)
REFERENCES Tab_aluno(Matricula)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)
TYPE=InnoDB;

CREATE TABLE tab_revisao (
numerorevisao INT NOT NULL AUTO_INCREMENT,
Tab_nota_matricula INT(10) NOT NULL,
Tabnota_disc_codigo INT(11) NOT NULL,
datarev DATE NULL,
notarevisao INT(1) NULL,
situacao INT(1) NULL,
PRIMARY KEY(numerorevisao, Tab_nota_matricula, Tabnota_disc_codigo),

INDEX Tab_revisao_FKIndex1(Tab_nota_matricula),
INDEX Tab_revisao_FKIndex2(Tabnota_disc_codigo),

FOREIGN KEY(Tab_nota_matricula)
REFERENCES Tab_nota(Tab_aluno_Matricula)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
FOREIGN KEY(Tabnota_disc_codigo)
REFERENCES Tab_nota(Tab_disciplina_Codigo)
ON DELETE RESTRICT
ON UPDATE RESTRICT

)TYPE=InnoDB;
-----------------------------------------------


Evertondanilo

Evertondanilo

Curtidas 0

Respostas

Wagnerbianchi

Wagnerbianchi

12/09/2006

Olá amigão,

O complicado é que, diante do seu modelo de dados, quando você cadastra o aluno, ele ainda não terá notas pois ainda não fez nennhuma prova. certo??

Ao cadastrar o aluno, deve existir uma entidade M:N para cadastrar uma relação em que muitos alunos podem cursar varias disciplinas e que muitos alunos que cursam muitas disciplinasde um curso, podem ainda fazer várias provas. As notas são uma média ou são as notas destes testes??

Para criar uma TRIGGER você deverá definir bem a regra do seu negócio pois estes recursos são realemte para estabelecer a regra do negócio.

Dê uma olhada nisso: http://dev.mysql.com/doc/refman/5.0/en/triggers.html

Qualquer dúvida, cotinue postando. :wink:


GOSTEI 0
POSTAR