MySQL Forums
Forum List  »  Portuguese

Criar um trigger para obedecer parâmetros
Posted by: Luis Ribeiro
Date: September 28, 2021 01:55PM

Como criar um trigger ,que sempre que for introduzido um novo registo onde o par de valores correspondentes aos campos "numaluno" e "coddisc" já exista na tabela , isto é se um exame for repetido para aquele aluno e disciplina, o registo entre os repetidos com a nota mais baixa deverá ser eliminado na tabela de "Exames" e acrescentado à tabela de "Examesbaixos"?
Como não existe nenhuma tabela "Examesbaixos" essa mesmo deve ser criada.


tabela de Alunos :
| numaluno | nome | turma|
|:-------- |:------:| -------:|
| 1 | Alberto| B |
| 2 | Fran | B |
|3 |Antonio | A |
| 4 | Rita | C |


tabela de Disciplinas :
| coddisc | nome | precedencia|
|:-------- |:------:| -------:|
| mat1 | matematica1 | NULL |
| mat2 | matematica2 | mat1 |
|prog1 | programacao1 | NULL |
| prog2 | programacao2 | prog1|

tabela de Exames :
| id | numaluno | coddisc | nota |
|:--------|:------: | -------:|-------:|
| 1 | 1 | mat1 | 16
| 2 | 1 | mat2 | 3
| 3 | 1 | prog1 | 11
| 4 | 1 | prog2 | 2
| 5 | 1 | prog2 | 19
| 6 | 2 | prog1 | 13
| 7 | 2 | mat1 | 8
| 8 | 2 | mat2 | 6


Estou bloqueado , não vejo forma de fazer o trigger.


CREATE TRIGGER verificacaonotas after update
ON exames
for each row
AS
begin

-------------------------------------------
Começo por verificar as notas( mas como relaciono com os alunos?!?!?!) e se for superior adicionar na tabela exame se for inferior adicionar na tabela Examesbaixos
------------------------------------------



IF NEW.nota > OLD.nota THEN
INSERT INTO exames VALUES (NEW.id,NEW.nota);

ELSE
INSERT INTO Examesbaixo values (New.id,New.nota)
END IF;


Não estou a conseguir resolver,se for possível gostava de uma ajuda

Options: ReplyQuote


Subject
Views
Written By
Posted
Criar um trigger para obedecer parâmetros
242
September 28, 2021 01:55PM


Sorry, only registered users may post in this forum.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.