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 :

Changement d'utilisateur courant dans la suppression en cascade


Sujet :

PostgreSQL

  1. #1
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut Changement d'utilisateur courant dans la suppression en cascade
    Salut
    Je constate un problème avec CURRENT_USER lors d'une suppression en cascade.
    La situation...(9.4.1)
    1-->_______
    Je me connecte avec le compte postgres
    Création de deux tables liées avec suppression en cascade...
    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
     
    CREATE TABLE ta
    (
      ida integer NOT NULL,
      v character varying,
      CONSTRAINT ta_pkey PRIMARY KEY (ida)
    )
     
    CREATE TABLE tb
    (
      idb integer NOT NULL,
      ida integer,
      v character varying,
      CONSTRAINT tb_pkey PRIMARY KEY (idb),
      CONSTRAINT tb_ida_fkey FOREIGN KEY (ida)
          REFERENCES ta (ida) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE CASCADE
    )
    La table qui enregistre l'historique de CURRENT_USER

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE th
    (
      v character varying,
      idh serial NOT NULL,
      CONSTRAINT th_pkey PRIMARY KEY (idh)
    )
    Les triggers
    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
     
    CREATE OR REPLACE FUNCTION huser() RETURNS trigger AS
    $$
    begin
    	insert into th(v) values(current_user);
    	return old;
    end
    $$
      LANGUAGE plpgsql
     
     CREATE TRIGGER huser
     BEFORE DELETE
     ON ta
     FOR EACH ROW
     EXECUTE PROCEDURE huser();
     
     CREATE TRIGGER huser
     BEFORE DELETE
     ON tb
     FOR EACH ROW
     EXECUTE PROCEDURE huser();
    Les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO ta(ida, v) VALUES (1, 'A'), (2, 'B');
    INSERT INTO tb(idb, ida, v) VALUES (1, 1, 'Aa'), (2, 1, 'Ab'), (3,2, 'Ba'), (4, 2, 'Bb');
    2-->___________
    Je me connecte avec un autre compte

    La suppression dans ta (sera fait avec le nouveau compte) qui provoquera une suppression en cascade (avec le compte postgres!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    delete from ta where ida=1;
    Le contenu de l'historique de CURRENT_USER
    Nom : pg__.png
Affichages : 260
Taille : 2,2 Ko
    Alors, la question: est ce un comportement normal?
    Je voulais mettre ne place un mécanisme de contrôle de modification et de suppression (vous ne supprimer ou modifier que si vous êtes propriétaire ou administrateur). Mais ce comportement de PostgreSQL est un frein.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut La reponse d'un expert
    Salut
    La réponse est donnée par un expert.
    Oui, c'est un comportement normal. La vérification et la suppression des données référencées sont effectuées par l'utilisateur propriétaire de la table.
    Ce comportement est-il pertinent avec la gestion des privilèges?
    Qu'en est-il d'autres SGBD?
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Non, c'est anormal ! Mais beaucoup d'éditeurs ont confondus les notions d'utilisateurs, de propriétaire voir de schéma SQL (c'est notamment toujours le cas chez Oracle).

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [Framework] accéder à l'utilisateur courant dans un WebContext
    Par tchize_ dans le forum Spring
    Réponses: 5
    Dernier message: 29/06/2011, 10h04
  2. Réponses: 3
    Dernier message: 29/05/2010, 11h28
  3. [IE6] Changement de page courante dans un iframe
    Par maximus09 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2009, 13h32
  4. Réponses: 7
    Dernier message: 06/05/2007, 18h11
  5. Problem avec l'utilisateur courant dans SLQ
    Par soulsidibe dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/05/2006, 14h02

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