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 :

Héritage et procédures stockées


Sujet :

PostgreSQL

  1. #1
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut Héritage et procédures stockées
    Bonjour,

    on me demande d'utiliser l'héritage dans un projet, mais j'ai quelques soucis avec mes procédures stockées.

    J'ai créé deux tables pour faire des petits test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE users
    (
      id serial NOT NULL,
      active boolean DEFAULT true,
      firstname character varying(40),
      "name" character varying(40),
      phonenumbers text,
      site_id integer,
      CONSTRAINT users_pkey PRIMARY KEY (id),
      CONSTRAINT users_site_id_fkey FOREIGN KEY (site_id)
          REFERENCES sites (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE superusers
    (
      id serial NOT NULL,
    -- Hérité(e) from table superusers:  active boolean DEFAULT true,
    -- Hérité(e) from table superusers:  firstname character varying(40),
    -- Hérité(e) from table superusers:  "name" character varying(40),
    -- Hérité(e) from table superusers:  phonenumbers text,
    -- Hérité(e) from table superusers:  site_id integer,
      rank character varying(40),
      CONSTRAINT superusers_pkey PRIMARY KEY (id)
    )
    INHERITS (users)
    Jusque là, il me semble qu'il n'y a pas de problème, mais quand je veux rajouter des procédures stockées, ça plante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE FUNCTION insert_superuser(Superusers)
    	RETURNs BIGINT AS
    $$
    	INSERT INTO superusers
    	VALUES(DEFAULT,$1.rank,$1.active,$1.firstname,$1.name,$1.phoneNumbers,$1.Site_id
    );
    	SELECT currval('Superusers_id_seq'::regclass);
    $$
    LANGUAGE 'sql';
    Quand je tente d'ajouter ma procédure stockée au système, j'ai une erreur, que je ne comprend pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ERROR:  column "active" is of type boolean but expression is of type character varying
    HINT:  You will need to rewrite or cast the expression.
    CONTEXT:  SQL function "insert_superuser"
    Pourquoi active serait un character varying ?
    Ma procédure stockée insert_user(users) fonctionne pourtant.
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  2. #2
    Membre émérite
    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
    Points : 2 890
    Points
    2 890
    Par défaut
    Ce que l'erreur implique apparemment, c'est que l'ordre des colonnes de la table superusers ne colle pas avec l'ordre des valeurs que tu donnes dans la clause VALUES.
    Ce problème est évitable en listant explicitement les colonnes de la table destinatrice de l'INSERT, ce qui permet de ne pas dépendre de leur ordre, et aussi de se prémunir des ajouts de colonne futurs.

  3. #3
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut
    Effectivement, c'était ça le problème.

    Résolu, merci.
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Procédure stockée : réutilisabilité pour un héritage
    Par Tidus159 dans le forum Langage SQL
    Réponses: 0
    Dernier message: 30/04/2008, 12h58
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

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