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

PostgreSQL Discussion :

Suppression + on delete + batch


Sujet :

PostgreSQL

  1. #1
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut Suppression + on delete + batch
    Bonjour à tous.

    J'ai lu les différentes documentations sur SQL du site et je me pose une question.

    Je vous affiche d'abord deux tables:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE TABLE objet_commun
    (
      id_objet int4 NOT NULL DEFAULT 0,
      id_antiquaire int4 NOT NULL,
      nb_photos int2 NOT NULL DEFAULT 0,
      prix float8,
      longueur float4,
      largeur float4,
      hauteur float4,
      profondeur float4,
      diametre float4,
      date_modif date NOT NULL,
      reference varchar(15),
      CONSTRAINT pk_objet_commun PRIMARY KEY (id_objet),
      CONSTRAINT fk_objetcommun1 FOREIGN KEY (id_antiquaire) REFERENCES antiquaire_client (id_antiquaire) ON UPDATE RESTRICT ON DELETE RESTRICT
    ) 
     
    CREATE TABLE objet_fra
    (
      id_objet int4 NOT NULL,
      nom_fra varchar(100) NOT NULL,
      comment_fra text,
      matiere_fra varchar(50),
      epoque_fra varchar(50),
      origine_fra varchar(50),
      CONSTRAINT "pk_objetFra" PRIMARY KEY (id_objet),
      CONSTRAINT "fk_objetFra" FOREIGN KEY (id_objet) REFERENCES objet_commun (id_objet) ON UPDATE RESTRICT ON DELETE RESTRICT
    )
    Comme vous le voyez, ma contrainte de la table objet_fra est "ON DELETE RESTRICT".

    Dans mon code PHP, si je supprimer un objet, je dois supprimer dans objet_commun et dans objet_fra.

    Vaut-il mieux que je supprimer juste dans objet_commmun mais que cette table comporte une contrainte ON DELETE SET NULL afin de supprimer ces lignes par un abtch de nuit ?

    J'avoue ne pas connaitre tres bien ce foctionnement.
    Est-ce compliqué a programmer ?
    Vaut-il mieux utiliser des triggers ?
    Vaut-il mieux laisser tel quel et faire toutes les suppressions dans mon code PHP ?

    Pour l'instant je me penche plutot vers le trigger avec une procedures stockée car le nombre de suppressions par jour sera tres faible voire nul.

    Merci d'avance pour vos conseils d'experts lol

  2. #2
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    Finalement, j'ai opté pour une procedures stockées que voici

    CREATE OR REPLACE FUNCTION deleteobjet(int4)
    RETURNS int4 AS

    DECLARE identifiant ALIAS FOR $1;
    BEGIN
    DELETE FROM objet_fra WHERE id_objet=identifiant;
    DELETE FROM objet_eng WHERE id_objet=identifiant;
    DELETE FROM objet_images WHERE id_objet=identifiant;
    DELETE FROM objet_commun WHERE id_objet=identifiant;
    return 0;
    END;

    LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION deleteobjet(int4) OWNER TO postgres;
    GRANT EXECUTE ON FUNCTION deleteobjet(int4) TO public;
    GRANT EXECUTE ON FUNCTION deleteobjet(int4) TO postgres;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Est ce un bon choix ?
    Ainsi je peux dans mon code PHP appeler cette fonction et zou, ca vire tout.

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Par défaut
    Si je comprends bien, tu veux que tes suppressions se propagent aux tables liées. Dans ce cas, pourquoi ne pas utiliser "ON DELETE CASCADE" ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    Je ne l'utilise pas car ce n'est pas ce qu'il y a de plus sur.
    Je desire que ce soit automatique mais automatique a partir du moment ou je l'ai decidé.
    en gros, si un developpeur passe et se plante en faisant un delete sur la première table et s'en rend compte, il pourra reprendre les données sauvegardées dans la nuit mais ne verra peut etre pas toutes les données des autres tables qui ne sont pas présentes, etc.

    Je trouve que la procedures stockées est bien plus sur au niveau de la securité.
    On a vite fait de faire des betises avec un cascade.
    Enfin ce n'est que mon avis et j'accepte tous les arguments inverses !

    Merci quand meme

Discussions similaires

  1. [requet delete] Probleme de suppression
    Par agougeon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/07/2006, 12h17
  2. [BATCH] Suppression Ligne
    Par kilian dans le forum Windows
    Réponses: 2
    Dernier message: 24/05/2006, 14h02
  3. Pb de suppression d'un fichier avec la méthode File.delete()
    Par benzing dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 21/01/2006, 15h48
  4. [batch] problème de suppression de dossier
    Par july dans le forum Windows
    Réponses: 2
    Dernier message: 22/07/2005, 11h39
  5. [BATCH]Suppression de fichier
    Par alxkid dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/04/2004, 13h25

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