Skip to content

Commit c484711

Browse files
committed
correção para TE procedure/trigger
1 parent dcf0eea commit c484711

File tree

4 files changed

+16
-35
lines changed

4 files changed

+16
-35
lines changed

src/PROCEDURE.sql

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -118,40 +118,31 @@ END;
118118
$$ LANGUAGE plpgsql;
119119

120120

121-
122121
CREATE OR REPLACE FUNCTION validar_personagem() RETURNS TRIGGER AS $$
123122
BEGIN
124-
123+
-- Se o tipo for PC, insere na tabela PC se não existir
125124
IF NEW.tipo = 'PC' THEN
126125
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';
126+
INSERT INTO PC (id_personagem) VALUES (NEW.id_personagem);
128127
END IF;
128+
129+
-- Garante exclusividade: impede que um personagem PC esteja na tabela NPC
130+
IF EXISTS (SELECT 1 FROM NPC WHERE id_personagem = NEW.id_personagem) THEN
131+
RAISE EXCEPTION 'Personagem do tipo PC não pode estar na tabela NPC';
132+
END IF;
133+
134+
-- Se o tipo for NPC, insere na tabela NPC se não existir
129135
ELSIF NEW.tipo = 'NPC' THEN
130136
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';
137+
INSERT INTO NPC (id_personagem) VALUES (NEW.id_personagem);
132138
END IF;
133-
END IF;
134-
135-
RETURN NEW;
136-
END;
137-
$$ LANGUAGE plpgsql;
138139

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';
140+
-- Garante exclusividade: impede que um personagem NPC esteja na tabela PC
141+
IF EXISTS (SELECT 1 FROM PC WHERE id_personagem = NEW.id_personagem) THEN
142+
RAISE EXCEPTION 'Personagem do tipo NPC não pode estar na tabela PC';
152143
END IF;
153144
END IF;
154-
145+
155146
RETURN NEW;
156147
END;
157-
$$ LANGUAGE plpgsql;
148+
$$ LANGUAGE plpgsql;

src/TRIGGER.sql

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,3 @@ BEFORE INSERT OR UPDATE ON Personagem
9393
FOR EACH ROW
9494
EXECUTE FUNCTION validar_personagem();
9595

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();
291 Bytes
Binary file not shown.

src/control.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import sys
44

55
class DatabaseController:
6-
def __init__(self, dbname="mud_castlevania", user="user", password="admin", host="localhost", port="5432"):
6+
def __init__(self, dbname="mud_castlevania1", user="user", password="admin", host="localhost", port="5432"):
77
self.dbname = dbname
88
self.user = user
99
self.password = password

0 commit comments

Comments
 (0)