PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » Nom de table variable » 19/02/2014 09:38:33

merci beaucoup. j'ai vu la page et je pense qu'elle pourra m'aider beaucoup. Je comprend le principe.
Par inattention, je m'était trompé sur le délimiteur de chaine.
Merci encore

#2 PL/pgSQL » Nom de table variable » 18/02/2014 13:07:09

doumib
Réponses : 2

Bonjour
Je veux écrire une requête pour insérer  des données dans mes tables. Le nom de la table est dans une variable que j'ai nommée ma_table et elle change en fonction de mon code. Au fait, j'ai beaucoup de tables ( avec exactement les mêmes colonnes) qui représentent les camions d'un parc auto. la requête d'insertion insère donc les données dans la table dont le nom est contenu dans la variable ma_table.

par exemple :

INSERT INTO ma_table VALUES( 10, 15, 1, "vitesse Normale", "acceptable");



Le problème est que je ne sais pas comment gérer la variable ma_table qui contient le nom du camion. Car avec ce code, ça ne marche pas du tout.

Je n'ai pas une connaissance solide sur les bases de données et je compte vraiment sur votre aide.

merci

#4 PgAdmin3 » Transfert des données d'une table dans une autre table avec pgadmin3 » 17/11/2013 16:06:02

doumib
Réponses : 2

Salut !
Dans ma base de donnée, j'ai une  table qui contient des données importantes. Je veux faire un simple test avec les données de certaines colonnes seulement.
Pour cela, j'ai créé une autre table, et j'ai essayé d'écrire un code qui me permet de copier les données dont j'ai besoin dans la nouvelle table pour pouvoir faire mon test sans toucher l'ancienne table.

et j'ai utilisé l'outil Query de pgadmin3 pour ecrire la requete SQL et l'executer. Mais il me donne toujours les messages d'erreur. je suis vraiment nouveau dans l'utilisation des BD et je voudrais que vous revoyez  mon code et si possible  me proposer autre methode en utilisant toujours pgadmin3.

ma nouvelle table se nomme fuel_table et l'ancienne se nomme FUEL. Les colonnes sont de memes types. Mais l'ancienne a plus de colonne que la nouvelle.

voici le code:

begin

declare nbre int;

WHILE  nbre <200 DO

INSERT INTO fuel_table (id,serial_number,rtc_time,gps_time,value)

SELECT ( "L_ID","L_SERIAL_NUMBER","L_RTC_TIME","L_GPS_TIME","L_VALUE")

FROM "FUEL"
WHERE "L_ID"=nbre;

nbre=nbre+1;

END WHILE;

END;





Dans le message d'erreur, on me dit ''erreur de syntaxe sur ou près de "declare". y'a d'autres messages aussi.

#5 Re : PgAdmin3 » creation de trigger avec pgAdmin3 » 17/10/2013 11:05:16

Merci beaucoup ! Effectivement c'était un problème de casse. ça va maintenant !

#6 Re : PgAdmin3 » creation de trigger avec pgAdmin3 » 16/10/2013 17:36:06

salut  ! comme je l'ai dit, j'utilise pgAdmin3. Donc voici la définition de mes tables:

pour la table eleve:


CREATE TABLE eleve
(
  "NOM" character varying(50) NOT NULL,
  "PRENOM" character varying(50) NOT NULL,
  "NUM" integer NOT NULL,
  "CLASSE" character varying(10) NOT NULL,
  CONSTRAINT "clé2" PRIMARY KEY ("NUM" )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE eleve
  OWNER TO postgres;

pour la table  nouveau_depart :

CREATE TABLE nouveau_depart
(
  "NOM_C" character varying(50) NOT NULL,
  "PRENOM_C" character varying(50) NOT NULL,
  "NUM_C" integer NOT NULL,
  "CLASSE_C" character varying(10) NOT NULL,
CONSTRAINT "clé3" PRIMARY KEY ("NUM_C" )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE nouveau_depart
  OWNER TO postgres;

Par ailleurs, le code de la fonction trigger est:

CREATE OR REPLACE FUNCTION ft_eleve()
  RETURNS trigger AS
$BODY$begin
INSERT INTO nouveau_depart
VALUES (NEW.NOM, NEW.PRENOM, NEW.NUM, NEW.CLASSE);
RETURN NEW;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION ft_eleve()
  OWNER TO postgres;


Et voici le trigger lui-même:

CREATE TRIGGER insert_after_eleve
  AFTER INSERT
  ON eleve
  FOR EACH ROW
  EXECUTE PROCEDURE ft_eleve();


merci beaucoup pour votre comprehension !

#7 PgAdmin3 » creation de trigger avec pgAdmin3 » 14/10/2013 13:55:44

doumib
Réponses : 4

salut ! je suis nouveau sur le forum. Et je suis nouveau également dans l'utilisation de postgresql.
Je veux utiliser un trigger pour inserer des données dans une table (que je nomme nouveau_depart) de ma BD après insertion des donées dans une autre table qui est nommée eleve (qui a pour colonnes : NOM, PRENOM, NUM, CLASSE ). Les colonnes de la table nouveau_depart sont NOM_C, PRENOM_C, NUM_C, CLASSE_C
j'utilise pgAdmin3. Dans ma fonction trigger , j'utilise le code suivant:

begin
INSERT INTO nouveau_depart
VALUES (NEW.NOM, NEW.PRENOM, NEW.NUM, NEW.CLASSE);
RETURN NEW;
end;

ensuite la creation du  trigger sur ma table eleve me donne ceci:

CREATE TRIGGER insert_after_eleve
   AFTER INSERT ON eleve
   FOR EACH ROW
   EXECUTE PROCEDURE ft_eleve;


Mais lorsqu' une insertion veut se faire dans la table eleve, le message d'erreur suivant apparait:

une erreur s'est produite:

" ERREUR: l'enregistrement "new" n'a pas de champs "nom"
CONTEXT: SQL statement "INSERT INTO nouveau_depart
VALUES (NEW.NOM, NEW.PRENOM, NEW.NUM, NEW.CLASSE);


J'ai vraiment besoin d'aide !
merci

Pied de page des forums

Propulsé par FluxBB