File tree Expand file tree Collapse file tree 6 files changed +55
-0
lines changed
Expand file tree Collapse file tree 6 files changed +55
-0
lines changed File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change @@ -116,3 +116,42 @@ BEGIN
116116 RETURN OLD;
117117END;
118118$$ LANGUAGE plpgsql;
119+
120+
121+
122+ CREATE OR REPLACE FUNCTION validar_personagem () RETURNS TRIGGER AS $$
123+ BEGIN
124+
125+ IF NEW .tipo = ' PC' THEN
126+ IF NOT EXISTS (SELECT 1 FROM PC WHERE id_personagem = NEW .id_personagem ) THEN
127+ RAISE EXCEPTION ' Todo Personagem do tipo PC deve ter um registro correspondente na tabela PC' ;
128+ END IF;
129+ ELSIF NEW .tipo = ' NPC' THEN
130+ IF NOT EXISTS (SELECT 1 FROM NPC WHERE id_personagem = NEW .id_personagem ) THEN
131+ RAISE EXCEPTION ' Todo Personagem do tipo NPC deve ter um registro correspondente na tabela NPC' ;
132+ END IF;
133+ END IF;
134+
135+ RETURN NEW;
136+ END;
137+ $$ LANGUAGE plpgsql;
138+
139+
140+ CREATE OR REPLACE FUNCTION validar_especializacao_personagem () RETURNS TRIGGER AS $$
141+ BEGIN
142+
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+
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 @@ -87,3 +87,19 @@ CREATE OR REPLACE TRIGGER trigger_respawn_inimigo
8787AFTER DELETE ON InstanciaInimigo
8888FOR EACH ROW
8989EXECUTE FUNCTION respawn_inimigo();
90+
91+ CREATE TRIGGER trigger_validar_personagem
92+ BEFORE INSERT OR UPDATE ON Personagem
93+ FOR EACH ROW
94+ 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();
You can’t perform that action at this time.
0 commit comments