Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT LOGRO.NOMBRE, USUARIO_ID
- FROM LOGRO, ADQUISICION, USUARIO
- WHERE ID_LOGRO = LOGRO_ID AND USUARIO_ID = ID_USUARIO ---> VIEW_LOGRO
- SELECT ID_USUARIO, USUARIO.NOMBRE, TOTAL
- FROM VIEW_PUNTOS, LOGRO, ADQUISICION, USUARIO
- WHERE (LOGRO.ID_LOGRO = ADQUISICION.LOGRO_ID AND USUARIO.ID_USUARIO = ADQUISICION.USUARIO_ID)
- AND (LOGRO.NOMBRE = 'Maestro' AND USUARIO.ID_USUARIO = VIEW_PUNTOS.USUARIO_ID) ---> VIEW_MAESTRO
- SELECT USUARIO_ID,NOMBRE, ESTADO
- FROM POKEMON, POKEDEX, SALVAJE
- WHERE SALVAJE_ID = ID_SALVAJE AND POKEMON_ID = ID_POKEMON ---> VIEW_POKEDEX
- SELECT USUARIO_ID, SUM(PUNTOS) AS TOTAL
- FROM LOGRO, ADQUISICION
- WHERE LOGRO.ID_LOGRO = ADQUISICION.LOGRO_ID
- GROUP BY USUARIO_ID ---> VIEW_PUNTOS
- Select USUARIO_ID,NOMBRE, CANTIDAD
- FROM MOCHILA,ITEMS, SLOTS
- WHERE (ITEMS.ID_ITEM = SLOTS.ITEM_ID AND SLOTS.CANTIDAD > 0) AND (SLOTS.MOCHILA_ID = MOCHILA.ID_MOCHILA) ---> VIEW_MOCHILA
- create or replace TRIGGER TRIGGER_MOCHILA
- BEFORE INSERT OR DELETE OR UPDATE ON SLOTS FOR EACH ROW
- DECLARE contador number; aux number; check_items number;
- BEGIN
- IF INSERTING THEN
- SELECT CANTIDAD_ITEMS INTO check_items FROM MOCHILA WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- IF check_items > 100 THEN
- RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
- ELSE
- UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS + :NEW.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :NEW.MOCHILA_ID;
- IF aux >= 100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- END IF;
- IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- END IF;
- END IF;
- END IF;
- IF UPDATING THEN
- SELECT CANTIDAD_ITEMS INTO check_items FROM MOCHILA WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- IF :NEW.CANTIDAD - :OLD.CANTIDAD > 0 AND check_items > 100 THEN
- RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
- ELSE IF :NEW.CANTIDAD - :OLD.CANTIDAD < 0 AND check_items + :NEW.CANTIDAD - :OLD.CANTIDAD > 100 THEN
- RAISE_APPLICATION_ERROR(-20000, 'Usuario ya posee 100 objetos.');
- ELSE
- IF :NEW.CANTIDAD > :OLD.CANTIDAD THEN UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS + :NEW.CANTIDAD - :OLD.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- END IF;
- IF :NEW.CANTIDAD < :OLD.CANTIDAD THEN UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS - :OLD.CANTIDAD + :NEW.CANTIDAD WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- END IF;
- SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :NEW.MOCHILA_ID;
- IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :NEW.MOCHILA_ID;
- END IF;
- IF aux >=100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
- END IF;
- END IF;
- END IF;
- END IF;
- IF DELETING THEN
- UPDATE MOCHILA SET CANTIDAD_ITEMS = CANTIDAD_ITEMS - :OLD.CANTIDAD WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
- SELECT CANTIDAD_ITEMS INTO aux FROM MOCHILA WHERE ID_MOCHILA= :OLD.MOCHILA_ID;
- IF aux < 100 THEN UPDATE MOCHILA SET ESTADO = 0 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
- END IF;
- IF aux >=100 THEN UPDATE MOCHILA SET ESTADO = 1 WHERE ID_MOCHILA = :OLD.MOCHILA_ID;
- END IF;
- END IF;
- END;
- create or replace TRIGGER TRIGGER_MAESTRO
- AFTER INSERT OR UPDATE OF ESTADO,USUARIO_ID,SALVAJE_ID ON POKEDEX FOR EACH ROW
- DECLARE cant_poke number;
- total_usuario number;
- BEGIN
- SELECT COUNT(ID_POKEMON) INTO cant_poke FROM POKEMON;
- UPDATE USUARIO SET CANTIDAD_POKEMON = CANTIDAD_POKEMON + :NEW.ESTADO WHERE ID_USUARIO = :NEW.USUARIO_ID;
- SELECT CANTIDAD_POKEMON INTO total_usuario FROM USUARIO WHERE ID_USUARIO = :NEW.USUARIO_ID;
- IF cant_poke = total_usuario THEN
- INSERT INTO ADQUISICION VALUES ('1',:NEW.USUARIO_ID,'10');
- END IF;
- END;
- create or replace PROCEDURE PROCEDURE_MAESTRO(usuario in varchar) AS
- BEGIN
- FOR aRow in (SELECT NOMBRE,TIPO,PS FROM POKEMON WHERE ID_POKEMON NOT IN (SELECT DISTINCT POKEMON.ID_POKEMON FROM POKEMON,SALVAJE,POKEDEX
- WHERE POKEDEX.USUARIO_ID = usuario AND POKEDEX.SALVAJE_ID = SALVAJE.ID_SALVAJE AND SALVAJE.POKEMON_ID=POKEMON.ID_POKEMON))
- LOOP
- dbms_output.put_line('nombre: ' || aRow.NOMBRE || ' tipo: ' || aRow.TIPO || ' Ps: ' || aRow.PS);
- END LOOP;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement