Vous n'êtes pas identifié(e).
Pages : 1
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
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
cette requête règle parfaitement mon problème !
merci bcp
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.
Merci beaucoup ! Effectivement c'était un problème de casse. ça va maintenant !
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 !
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
Pages : 1