Está en la página 1de 4

TABLAS ALTER TABLE apuesta ADD CONSTRAINT

fk_apuesta_usuario
CREATE TABLE usuario(
idUsuario NUMBER(9) NOT NULL, FOREIGN KEY(idUsuario) REFERENCES
numeroTelefono VARCHAR(15) NOT NULL, usuario(idUsuario)
saldo VARCHAR(20) NOT NULL,
ON DELETE CASCADE;
correo VARCHAR(50) NOT NULL,
tipoId VARCHAR(20) NOT NULL, CONSULTAS
fechaNacimiento DATE NOT NULL,
ciudadExpedicionID VARCHAR(100) NOT NULL, SELECT usuario.idUsuario,AVG(ValorApostado) AS
otros XMLTYPE NOT NULL PROMEDIOVALORAPOSTADO FROM apuesta,usuario
); WHERE apuesta.idUsuario = usuario.idUsuario AND
XTABLAS FECHA BETWEEN (SYSDATE-30) AND SYSDATE
DROP TABLE usuario CASCADE CONSTRAINTS; GROUP BY usuario.idUsuario, apuesta.idUsuario;
PRIMARIAS SELECT usuario.idUsuario,valorApostado FROM
ALTER TABLE usuario ADD CONSTRAINT Pk_usuario usuario,apuesta WHERE
usuario.idUsuario=apuesta.idUsuario AND
PRIMARY KEY(idUsuario); valorApostado>300;
FORANEAS SELECT
usuario.idUsuario,usuario.saldo,apuesta.valorApostad
ALTER TABLE cupon ADD CONSTRAINT fk_cupon
o FROM usuario,apuesta WHERE
FOREIGN KEY(idUsuario) REFERENCES usuario.idUsuario=apuesta.idUsuario ;
usuario(idUsuario);
POBLADO
UNICAS
INSERT INTO usuario values (343, '4238996042',
ALTER TABLE usuario ADD CONSTRAINT 73660831, 'dgarford9i@squidoo.com', 'F',
UK_Usuarios_nTelefono UNIQUE (numeroTelefono); TO_DATE( '26-Nov-1968', 'DD-MON-YYYY'),
'Salinggara' ,
ALTER TABLE usuario ADD CONSTRAINT
'<?xml version="1.0"?>
UK_Usuarios_Correo UNIQUE (correo);
<Otros>
CHECKS <Personal>
<Nombres>johan</Nombres>
ALTER TABLE usuario ADD CONSTRAINT <Apellidos>rueda</Apellidos>
CHK_correo_usuario CHECK (correo LIKE '%@%' AND <Direccion>girardot</Direccion>
correo NOT LIKE '%@%@%' ); </Personal>
ALTER TABLE usuario ADD CONSTRAINT </Otros>'
CHK_saldo_usuario CHECK (saldo >= 0 ); );
xPOBLAR
ALTER TABLE encuentro ADD CONSTRAINT DELETE FROM usuario;
CHK_estado_encuentro CHECK (estado IN ('A','T','S') ); INDICES
TUPLAS CREATE INDEX In_apuesta_valor ON
apuesta(valorApostado);
ALTER TABLE cupon ADD CONSTRAINT xINDICES
CH_Cupon_valorI DROP INDEX In_apuesta_valor;
VISTAS
CHECK( valorActual<=valorInicial);
CREATE OR REPLACE VIEW view_estado_encuentro
ACCIONES AS
(SELECT
ALTER TABLE apuesta DROP CONSTRAINT
idUsuario,numeroApuesta,valorApado,tnormal,estado
fk_apuesta_usuario;
,nombreDeporte,tipoEncuentroFROM apuesta A ,
encuentro E WHERE estado = 'A' and (A.fecha FOR EACH ROW
BETWEEN (SYSDATE-7) and SYSDATE) ); BEGIN
RAISE_APPLICATION_ERROR(-20004,'NO SE PUEDE
CREATE OR REPLACE VIEW view_apuesta_mayor AS MODIFICAR EL ID, INTENTE CON OTRO CAMPO');
(SELECT END;
idUsuario,valorApostado,numeroApuesta,idEncuentro /
FROM apuesta CREATE OR REPLACE TRIGGER
WHERE valorApostado>=300.000 TR_USUARIO_TELEFONO
); BEFORE INSERT
xVISTAS ON usuario
DROP VIEW view_promedio_apuestas; FOR EACH ROW
DROP VIEW view_estado_encuentro; BEGIN
TRIGGERS IF(:NEW.numeroTelefono IS NULL) THEN
---GENERAR CODIGO DE CUPON AUTOMATICO :NEW.numeroTelefono:='0000000000';
CREATE SEQUENCE CODIGOCUPON END IF;
INCREMENT BY 1; END;
CREATE OR REPLACE TRIGGER TR_CODIGOCUPON /
BEFORE INSERT CREATE SEQUENCE IDCONTRINCANTE
ON cupon INCREMENT BY 1;
FOR EACH ROW CREATE OR REPLACE TRIGGER TR_IDCONTRINCANTE
BEGIN BEFORE INSERT
:NEW.codigoCupon:=CODIGOCUPON.nextval; ON contrincante
END; FOR EACH ROW
/ BEGIN
CREATE OR REPLACE TRIGGER TR_INS_APUESTA :NEW.idContrincante:=IDCONTRINCANTE.nextval;
BEFORE INSERT END;
ON APUESTA /
FOR EACH ROW TRIGGERSOK
DECLARE UPDATE apuesta
x DATE; SET valorApostado = 73
BEGIN WHERE idUsuario = 609;
SELECT (fecha) INTO x FROM encuentro SELECT * FROM apuesta;
WHERE (encuentro.idEncuentro=:new.idEncuentro); ------
IF (:NEW.fecha>=x) THEN DELETE apuesta
RAISE_APPLICATION_ERROR(-20001,'NO SE WHERE idUsuario = 609;
PUEDE INSERTAR EL MISMO DIA DE EL ENCUENTRO'); SELECT * FROM apuesta;
END IF; XTRIGGERS
END; DROP TRIGGER TR_CODIGOCUPON;
/ DROP TRIGGER TR_USUARIO_IDUSUARIO;
CREATE OR REPLACE TRIGGER TR_MOD_APUESTA CRUDE
BEFORE UPDATE OF CREATE OR REPLACE PACKAGE PC_ENCUENTROS IS
NUMEROAPUESTA,FECHA,MARCADORA,MARCADORB PROCEDURE AD_ENCUENTRO(idEncuentro IN
,TNORMAL,IDUSUARIO,IDENCUENTRO NUMBER,xMarcadorA IN NUMBER, xMarcadorB IN
ON APUESTA NUMBER, xFecha IN DATE, xEstado IN VARCHAR,
FOR EACH ROW xnombreDeporte IN VARCHAR, xtipoEncuentro IN
BEGIN VARCHAR);
RAISE_APPLICATION_ERROR(-20003,'SOLO SE PUEDE PROCEDURE MO_ENCUENTRO(xidEncuentro IN
MODIFICAR EL VALOR APOSTADO'); NUMBER,xfecha IN DATE, xestado IN VARCHAR) ;
END; PROCEDURE EL_ENCUENTRO(xidEncuentro IN
/ NUMBER) ;
CREATE TRIGGER TR_USUARIO_IDUSUARIO FUNCTION CO_ESTADO_ENCUENTROS RETURN
BEFORE UPDATE OF idUsuario SYS_REFCURSOR;
ON usuario END PC_ENCUENTROS;
/
CRUDI
CREATE OR REPLACE PACKAGE BODY PC_ENCUENTROS IS

PROCEDURE AD_ENCUENTRO(idEncuentro IN NUMBER,xMarcadorA IN NUMBER, xMarcadorB IN NUMBER, xFecha


IN DATE, xEstado IN VARCHAR, xnombreDeporte IN VARCHAR, xtipoEncuentro IN VARCHAR) IS
BEGIN
INSERT INTO ENCUENTRO VALUES (idEncuentro ,xMarcadorA , xMarcadorB , xFecha, xEstado , xnombreDeporte,
xtipoEncuentro );
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE_APPLICATION_ERROR(-20010, 'No se puede insertar Encuentro.');
END;

PROCEDURE MO_ENCUENTRO(xidEncuentro IN NUMBER,xfecha IN DATE, xestado IN VARCHAR) IS


BEGIN
UPDATE ENCUENTRO SET idEncuentro = xidEncuentro WHERE fecha = xfecha and estado =
xestado;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE_APPLICATION_ERROR(-20000,'Error al modificar Encuentro.');
END;
PROCEDURE EL_ENCUENTRO(xidEncuentro IN NUMBER) IS
BEGIN
DELETE FROM ENCUENTRO WHERE idEncuentro = xidEncuentro;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE_APPLICATION_ERROR(-20000,'Error al eliminar el encuentro.');
END;

FUNCTION CO_ESTADO_ENCUENTROS RETURN SYS_REFCURSOR IS CO_EES SYS_REFCURSOR;


BEGIN
OPEN CO_EES FOR
SELECT ---ELIMINAR apuesta
idEncuentro,estado,nombreDeporte,tipoEncuentro EXECUTE PC_apuestas.EL_apuesta(1)
FROM encuentro WHERE estado = 'A'; ---CONULTAR APUESTAS
RETURN CO_EES; EXECUTE PC_USUARIOS.CO_APUESTAS_USER(1)
END; ---CONULTAR ESTADO ENCUENTROS
EXECUTE PC_USUARIOS.CO_ESTADO_ENCUENTROS()
END PC_ENCUENTROS;
/ xCRUD
CRUDOK
DROP PACKAGE PC_USUARIOS;
EXECUTE pc_apuestas.ad_apuesta(1,TO_DATE('2-
May-2020','DD-MON-YYYY'),4,3,0,'empate',1,1 ); DROP PACKAGE PC_APUESTAS;
---MODIFICAR apuesta
EXECUTE pc_apuestas.mod_apuesta(1,TO_DATE('2- DROP PACKAGE PA_ADMINISTRADOR;
May-2020','DD-MON-YYYY'),4,3,0,'empate',1,1 );
DROP PACKAGE PA_USUARIO; BEGIN
UPDATE USUARIO SET idUsuario =
xidUsuario WHERE
ACTORESE numeroTelefono=xnumeroTelefono and saldo= xsaldo
and correo = xcorreo and tipoId = xtipoId and
CREATE OR REPLACE PACKAGE PA_USUARIO IS fechaNacimiento = xfechaNacimiento and
PROCEDURE AD_APUESTA(xnumeroApuesta IN ciudadExpedicionID = xciudadExpedicionID and otros
NUMBER, xFecha IN DATE, xMarcadorA IN NUMBER, = xotros;
xMarcadorB IN NUMBER, xValorApostado IN COMMIT;
NUMBER, xtNormal IN VARCHAR,xidUsuario IN EXCEPTION
NUMBER, xidEncuentro IN NUMBER); WHEN OTHERS THEN
ROLLBACK;
PROCEDURE AD_USUARIO(idUsuario IN RAISE_APPLICATION_ERROR(-
NUMBER,xnumeroTelefono IN VARCHAR, xsaldo IN 20000,'Error al modificar Usuario.');
NUMBER, xcorreo IN VARCHAR, xtipoId IN VARCHAR, END;
xfechaNacimiento IN DATE, xCiudadExpedicionID IN PROCEDURE EL_USUARIO(xidUsuario IN NUMBER) IS
VARCHAR,xotros IN XMLTYPE) ; BEGIN
PROCEDURE MO_USUARIO(xidUsuario IN DELETE FROM USUARIO WHERE xidUsuario =
NUMBER,xnumeroTelefono IN VARCHAR, xsaldo IN xidUsuario;
NUMBER, xcorreo IN VARCHAR, xtipoId IN VARCHAR, COMMIT;
xfechaNacimiento IN DATE, xCiudadExpedicionID IN EXCEPTION
VARCHAR,xotros IN XMLTYPE) ; WHEN OTHERS THEN
ROLLBACK;
PROCEDURE EL_USUARIO(xidUsuario IN NUMBER); RAISE_APPLICATION_ERROR(-20000,'Error al
eliminar el Usuario.');
FUNCTION CO_ESTADO_ENCUENTROS RETURN
END;
SYS_REFCURSOR;
FUNCTION CO_APUESTAS_ULTIMO_MES_AVG
END PA_USUARIO; RETURN SYS_REFCURSOR IS CO_AUM
SYS_REFCURSOR;
/ACTORESI
BEGIN
CREATE OR REPLACE PACKAGE BODY PA_USUARIO IS OPEN CO_AUM FOR
PROCEDURE AD_USUARIO(idUsuario IN SELECT usuario.idUsuario,AVG(ValorApostado)
NUMBER,xnumeroTelefono IN VARCHAR, xsaldo IN AS PROMEDIOVALORAPOSTADO FROM
NUMBER, xcorreo IN VARCHAR, xtipoId IN VARCHAR, apuesta,usuario
xfechaNacimiento IN DATE, xCiudadExpedicionID IN WHERE apuesta.idUsuario = usuario.idUsuario AND
VARCHAR,xotros IN XMLTYPE) IS FECHA BETWEEN (SYSDATE-30) AND SYSDATE
BEGIN GROUP BY usuario.idUsuario, apuesta.idUsuario;
INSERT INTO USUARIO VALUES RETURN CO_AUM;
(idUsuario,xnumeroTelefono , xsaldo , xcorreo , END;
xtipoId , xfechaNacimiento , END PA_USUARIO;
xCiudadExpedicionID ,xotros); /
COMMIT; SEGURIDAD
EXCEPTION CREATE ROLE usuarios;
WHEN OTHERS THEN GRANT EXECUTE ON PA_USUARIO TO usuarios;
ROLLBACK; GRANT usuarios TO bd2145264 ;
RAISE_APPLICATION_ERROR(-20010, 'No se SEGURIDADOK
puede insertar Usuario.'); EXEC
END; BD2154469.pa_administrador.ad_deporte('test',1,1);
PROCEDURE MO_USUARIO(xidUsuario IN XSEGURIDAD
NUMBER,xnumeroTelefono IN VARCHAR, xsaldo IN DROP ROLE usuarios;
NUMBER, xcorreo IN VARCHAR, xtipoId IN VARCHAR, REVOKE usuarios
xfechaNacimiento IN DATE, xCiudadExpedicionID IN FROM bd2145264;
VARCHAR,xotros IN XMLTYPE) IS

También podría gustarte