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 :

Colonne en lecture seule


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut Colonne en lecture seule
    * Bonjour, *

    Je voudrais mettre une colonne d'une table en lecture seule ( = interdit d'en modifier la valeur) .

    On m'a parlé d'utiliser une règle sur Update .

    Comment faire cette règle ?

    * Merci *

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Il faut plutôt faire un trigger sur update qui lève une exception si l'expression old.colonne IS DISTINCT FROM new.colonne est vraie.

  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 997
    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 997
    Billets dans le blog
    6
    Par défaut
    Utilisez une vue et faite une transformation "nulle" sur cette colonne.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW V
    AS
    SELECT C1, C2, C3 + 0 AS C3
    FROM  MaTable
    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/ * * * * *

  4. #4
    Membre éclairé
    Profil pro
    Gestionnaire de données
    Inscrit en
    Mars 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestionnaire de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 356
    Par défaut
    Merci beaucoup , j'ai donc créé une procédure et un trigger

    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
    CREATE FUNCTION public.bloque()
      RETURNS "trigger" AS
    $BODY$ 
    DECLARE
    BEGIN
    IF new.monchamp is distinct from old.monchamp THEN
                RAISE EXCEPTION 'Champ monchamp en lecture seule';
            END IF;
    	RETURN NEW;	
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE; 
     
    CREATE TRIGGER bloque
    	BEFORE UPDATE 
    	ON public.matable
    	FOR EACH ROW
    	EXECUTE PROCEDURE bloque()
    ;
    rq : dans la procédure , le code "is distinct from" est à préférer à l'operateur <> car il gère les null.

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

Discussions similaires

  1. [SP-2007] Colonne en lecture seule dans une liste
    Par pete666 dans le forum SharePoint
    Réponses: 1
    Dernier message: 24/11/2009, 16h24
  2. Erreur inattendue : La colonne FCT est en lecture seule.
    Par dietrich dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/07/2007, 10h30
  3. [TQuery][DBGRID] pb de mise à jour: table en lecture seule
    Par Chrystèle Carré dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/11/2003, 09h36
  4. Réponses: 5
    Dernier message: 28/10/2003, 15h01
  5. [firebird] Connexion impossible en lecture seule
    Par severine dans le forum Administration
    Réponses: 2
    Dernier message: 01/08/2003, 15h35

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