IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Supprimer le fichier physique d'un champ BFILE ?


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    PBR
    PBR est déconnecté
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut Supprimer le fichier physique d'un champ BFILE ?
    Bonjour à tous,

    J'aimerais savoir s'il est possible de supprimer le fichier physique lié à un champ de type BFILE automatiquement, lorsqu'on fait un DELETE dans la table ?
    (Pour le moment j'arrive bien à supprimer l'enregistrement dans la table, mais le fichier correspondant reste dans mon répertoire physique...).

    Y a-t-il une "option" prédéfinie qui existe ?
    Faut-il mettre en place une procédure/trigger/autre... et si oui comment ?

    Merci d'avance pour votre aide.

    PBR

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Les BFILEs permettent uniquement d'accéder à des fichiers en lecture seule.

    Il est impossible de modifier ou supprimer des fichiers pointés par des BFILEs...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    PBR
    PBR est déconnecté
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    Merci pour votre réponse.

    De ce fait, pensez-vous qu'il soit possible de mettre en place un "bidouillage" via un trigger / et ou procédure pour palier le problème ?

    J'ai vu par exemple qu'il y avait une fonction permettant de récupérer le nom du fichier lié au BFILE. Je me dis qu'il est peut-être possible dans ce cas de mettre en place une sorte de trigger sur un DELETE de ma table, qui récupererait automatiquement le nom du fichier physique et le supprimerait via une autre commande... ?

    Je suis débutant dans ce domaine... merci pour votre aide

    PBR

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    si le serveur est >= 9.2, tu peux utiliser UTL_FILE.FREMOVE()
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    PBR
    PBR est déconnecté
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Par défaut
    Merci pour le tuyau !

    Du coup j'ai mis en place un trigger... je ne sais pas si la solution est super, mais comme apparemment ça fonctionne je met le bout de code ici, des fois que ça interesse un débutant comme moi



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    CREATE OR REPLACE TRIGGER "Mon_Shema"."Mon_Trigger"
    	BEFORE DELETE
    	ON "Mon_Shema"."Ma_Table"
    	FOR EACH ROW
    DECLARE
    	fileDir VARCHAR2(100);
    	fileName VARCHAR2(100);
    BEGIN
    	IF ( DBMS_LOB.FILEEXISTS(:OLD.Mon_Champ_BFILE) = 1 ) THEN
      	  DBMS_LOB.FILEGETNAME(:OLD.Mon_Champ_BFILE, fileDir, fileName);
    	  UTL_FILE.FREMOVE(fileDir,fileName);
    	END IF;
    End;
    /

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Comment supprimer un fichier qui est utilisé ?
    Par Toon94 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/06/2010, 12h59
  2. Supprimer un fichier "physiquement"
    Par bit_o dans le forum C
    Réponses: 4
    Dernier message: 24/05/2007, 22h22
  3. [cvs] supprimer un fichier
    Par ed_hunter dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 27/03/2007, 18h17
  4. supprimer et archiver données de certains champs
    Par tomm dans le forum Bases de données
    Réponses: 11
    Dernier message: 10/03/2004, 08h13
  5. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo