Skip to content

Commit 8b1e766

Browse files
committed
trigger e procedure para tipo pc e npc
1 parent 5b0b285 commit 8b1e766

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/PROCEDURE.sql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,23 @@ BEGIN
135135
RETURN NEW;
136136
END;
137137
$$ LANGUAGE plpgsql;
138+
139+
140+
CREATE OR REPLACE FUNCTION validar_especializacao_personagem() RETURNS TRIGGER AS $$
141+
BEGIN
142+
-- Garante que um PC tenha um registro na tabela Personagem
143+
IF TG_TABLE_NAME = 'pc' THEN
144+
IF NOT EXISTS (SELECT 1 FROM Personagem WHERE id_personagem = NEW.id_personagem AND tipo = 'PC') THEN
145+
RAISE EXCEPTION 'Não é possível inserir um PC sem um registro correspondente na tabela Personagem';
146+
END IF;
147+
148+
-- Garante que um NPC tenha um registro na tabela Personagem
149+
ELSIF TG_TABLE_NAME = 'npc' THEN
150+
IF NOT EXISTS (SELECT 1 FROM Personagem WHERE id_personagem = NEW.id_personagem AND tipo = 'NPC') THEN
151+
RAISE EXCEPTION 'Não é possível inserir um NPC sem um registro correspondente na tabela Personagem';
152+
END IF;
153+
END IF;
154+
155+
RETURN NEW;
156+
END;
157+
$$ LANGUAGE plpgsql;

src/TRIGGER.sql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,14 @@ CREATE TRIGGER trigger_validar_personagem
9292
BEFORE INSERT OR UPDATE ON Personagem
9393
FOR EACH ROW
9494
EXECUTE FUNCTION validar_personagem();
95+
96+
97+
CREATE TRIGGER trigger_validar_pc
98+
BEFORE INSERT OR UPDATE ON PC
99+
FOR EACH ROW
100+
EXECUTE FUNCTION validar_especializacao_personagem();
101+
102+
CREATE TRIGGER trigger_validar_npc
103+
BEFORE INSERT OR UPDATE ON NPC
104+
FOR EACH ROW
105+
EXECUTE FUNCTION validar_especializacao_personagem();

0 commit comments

Comments
 (0)