File tree Expand file tree Collapse file tree 2 files changed +31
-0
lines changed
Expand file tree Collapse file tree 2 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -135,3 +135,23 @@ BEGIN
135135 RETURN NEW;
136136END;
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;
Original file line number Diff line number Diff line change @@ -92,3 +92,14 @@ CREATE TRIGGER trigger_validar_personagem
9292BEFORE INSERT OR UPDATE ON Personagem
9393FOR EACH ROW
9494EXECUTE 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();
You can’t perform that action at this time.
0 commit comments