CREATE OR REPLACE FUNCTION eliminar_usuario() RETURNS TRIGGER AS $$
BEGIN
--Borra los comentarios y links de un usuario cuando se borre
DELETE FROM comentario WHERE usuarioID=OLD.usuarioID;
DELETE FROM link WHERE usuarioID=OLD.usuarioID;
--Reasignar todos los videos que tienen usuarioID en id_primer_usuario al siguiente usuario que lo agregó
FOR i IN SELECT FROM video WHERE id_primer_usuario=OLD.usuarioID LOOP
SELECT usuarioID INTO nuevoUsuarioID FROM link WHERE link.videoID=i.videoID;
UPDATE video SET id_primer_usuario=nuevoUsuarioID WHERE video.videoID=i.videoID;
END LOOP;
RETURN NULL; --Retornamos NULL para que borre, OLD para cancelar el DELETE.
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER eliminar_usuario BEFORE DELETE ON usuario FOR EACH ROW EXECUTE PROCEDURE eliminar_usuario();