Está en la página 1de 9

drop table if exists comentario;

drop table if exists aparece;


drop table if exists foto;
drop table if exists usuario;

create table usuario


(
nick character varying primary key not null,
nombre character varying(20),
clave character varying (20),
email character varying (50)
);

create table comentario


(
id character varying primary key not null,
texto character varying (20),
fecha date not null,
nick character varying not null,
constraint fknick foreign key (nick) references usuario(nick) ON DELETE
CASCADE
);

create table foto


(
archivo character varying primary key not null,
descripcion character varying (20)
);

create table aparece


(
nick character varying,
archivo character varying,
coordenada character varying,
constraint fknick foreign key (nick) references usuario(nick) ON DELETE
CASCADE,
constraint fkarchivo foreign key (archivo) references foto(archivo) ON DELETE
CASCADE
);

---------------------------------insertar datos en todas las tablas en una


funcion--------------------------------------create or replace function insertar(_nick character varying,_nombre character
varying,_clave character varying,_email character varying,_id character
varying,_texto character varying,_fecha date,_archivo character
varying,_descripcion character varying,_coordenada character varying) returns
integer as $$
begin
insert into usuario values(_nick,_nombre,_clave,_email);
insert into comentario values(_id,_texto,_fecha,_nick);
insert into foto values(_archivo,_descripcion);
insert into aparece values (_nick,_archivo,_coordenada);
return null;
END
$$ language 'plpgsql';

--------------------------------------insertar datos en tabla


usuario-----------------------------------

create or replace function insertarusuario(_nick character varying,_nombre


character varying,_clave character varying,_email character varying) returns
integer as $$
begin
insert into usuario values(_nick,_nombre,_clave,_email);
return null;
END
$$ language 'plpgsql';

-----------------------------------------insertar datos en tabla


comentario-----------------------------

create or replace function insertarcomentario(_id character varying,_texto


character varying,_fecha date,_nick character varying) returns integer as $$
begin
insert into comentario values(_id,_texto,_fecha,_nick);
return null;
END
$$ language 'plpgsql';

----------------------------------------insertar datos en tabla


foto------------------------------------------------create or replace function insertarfoto(_archivo character varying,_descripcion
character varying) returns integer as $$
begin
insert into foto values(_archivo,_descripcion);
return null;
END
$$ language 'plpgsql';

-------------------------------------------insertar datos en tabla


aparece--------------------------------

create or replace function insertaraparece(_nick character varying,_archivo


character varying,_coordenada character varying) returns integer as $$
begin
insert into aparece values (_nick,_archivo,_coordenada);
return null;
END
$$ language 'plpgsql';

-------------------ingresar datos en cada una de las


funciones--------------------------------------select
insertar('Terry1','vicente','123','terryjose67@gmail.com','0012','texto','2015-0101','archivo2','foto001','4,6');
select insertarusuario ('user15','recalde','asfr','adefgrd@live.com');
select insertarcomentario('0015','txto','2012-03-03','user15');
select insertarfoto('archivo15','foto001');
select insertaraparece('user15','archivo15','4,5 - 10,15');

-----------------------------------insertar datos en tablas


simples------------------------------------------insert into usuario values('user1','jose','asfr','adefgrd@gmail.com');
insert into usuario values('user2','vicente','asfr','adefgrd@hotmail.com');
insert into usuario values('user3','gallo','asfr','adefgrd@yahoo.com');
insert into usuario values('user4','recalde','asfr','adefgrd@live.com');

insert into comentario values ('001','txto','2015-07-03','user1');


insert into comentario values ('002','txto','2014-05-03','user2');
insert into comentario values ('003','txto','2013-04-03','user3');
insert into comentario values ('004','txto','2012-03-03','user4');

insert into foto values ('archivo1','foto001');


insert into foto values ('archivo20','foto002');
insert into foto values ('archivo3','foto003');
insert into foto values ('archivo4','foto004');

insert into aparece values('user1','archivo1','4,5 - 10,15');


insert into aparece values('user2','archivo20','4,5 - 10,15');
insert into aparece values('user3','archivo3','4,5 - 10,15');
insert into aparece values('user4','archivo4','4,5 - 10,15');

------------------------------------------consulta general---------------------------------select
id,usuario.nick,clave,email,fecha,aparece.archivo,descripcion,coordenada from
usuario, comentario, foto, aparece
where usuario.nick = aparece.nick and foto.archivo= aparece.archivo and
usuario.nick = comentario.nick;

------------------- actualizar clave tabla usuario---------------------------

create or replace function actualizar_clave(_nick character varying,_clave


character varying) returns integer as $$
begin
update usuario set clave = _clave where upper(usuario.nick)= upper(_nick);
return null;
END
$$ language 'plpgsql';
select actualizar_clave('uSer1','adelina1');

select * from usuario;


----------------------actualizar tabla aparece------create or replace function actualizar_aparece(_nick character varying,_coord
character varying) returns integer as $$
begin
update aparece set coordenada = _coord where aparece.nick= _nick;
return null;
END
$$ language 'plpgsql';
select actualizar_aparece('user1','34,5');

---------------------actualizar tabla comentario----------------create or replace function actualizar_comentario(_nick character varying,_texto


character varying) returns integer as $$
begin
update comentario set texto = _texto where comentario.nick= _nick;
return null;
END
$$ language 'plpgsql';
select actualizar_aparece('user1','descripcion de algo');

create or replace function eliminar_tabla(_nick character varying) returns


integer as $$
begin
delete from usuario
where usuario.nick = _nick;
return null;
END
$$ language 'plpgsql';
select eliminar_tabla('user2');

-------------------------eliminar registros tabla comentario-------------create or replace function eliminar_tabla2(_nick character varying) returns
integer as $$
begin
delete from comentario
where comentario.nick = _nick;

return null;
END
$$ language 'plpgsql';
select eliminar_tabla2('user3');

create or replace function eliminar_tabla3(_archivo character varying) returns


integer as $$
begin
delete from foto
where foto.archivo = _archivo;
return null;
END
$$ language 'plpgsql';
select eliminar_tabla3('archivo4');
--select * from foto

------------------------triggers--------------------------

CREATE OR REPLACE FUNCTION validar_insert_usuario () RETURNS TRIGGER AS


$$
BEGIN
IF NEW.nick ISNULL THEN
RAISE EXCEPTION 'El usuario no puede ser un valor nulo';
END IF;
IF NEW.clave ISNULL THEN
RAISE EXCEPTION 'La clave no puede ser nula';
END IF;
IF NEW.nombre ISNULL THEN
RAISE EXCEPTION 'El nombre del usuario no puede ser nulo';
END IF;
IF NEW.email ISNULL THEN
RAISE EXCEPTION 'El email no puede ser nulo';
END IF;
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';

CREATE TRIGGER valida_usuario BEFORE INSERT OR UPDATE ON usuario


FOR EACH ROW EXECUTE PROCEDURE validar_insert_usuario();

--insert into usuario values ('user15','jose','12');

---------------------------------------consulta general----------------------

select
id,usuario.nick,clave,email,fecha,aparece.archivo,descripcion,coordenada from
usuario, comentario, foto, aparece
where usuario.nick = aparece.nick and foto.archivo= aparece.archivo and
usuario.nick = comentario.nick;

También podría gustarte