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 15/02/2018 12:43:59

vincent HARDY
Membre

tables avec des clefs étrangères que cherche a remplir.

Bonjour,
j'ai trois tables avec des clefs étrangères que cherche a remplir. Après avoir essayer plusieurs requettes et avoir fouiller docs forums, je pose le problème ici. Merci pour votre aide :

-------------------------table1------------------------------------------------------------------

- Table: public."TableDegrésD'Analyses"

-- DROP TABLE public."TableDegrésD'Analyses";

CREATE TABLE public."TableDegrésD'Analyses"
(
  "ID degrés" bigint NOT NULL DEFAULT nextval('"TableDegrésD''Analyses_ID degrés_seq"'::regclass),
  "Degrés" bigint NOT NULL DEFAULT nextval('"TableDegrésD''Analyses_Degrés_seq"'::regclass),
  "Date Début Blocage" timestamp with time zone[],
  "Date de Création" timestamp with time zone[],
  "Date Fin Du Blocage" timestamp with time zone[],
  "ID Début De Fonction Boucle Principale" bigint NOT NULL DEFAULT nextval('"TableDegrésD''Analyses_ID Début De Fonction Boucle Princip_seq"'::regclass),
  "ID Fin De Fonction Boucle Principale" bigint NOT NULL DEFAULT nextval('"TableDegrésD''Analyses_ID Fin De Fonction Boucle Principale_seq"'::regclass),
  "ID Procéssus Principal" bigint NOT NULL DEFAULT nextval('"TableDegrésD''Analyses_ID Processus Principal_seq"'::regclass),
  CONSTRAINT "ClefTableDegrésD'Analyses" PRIMARY KEY ("ID degrés"),
  CONSTRAINT "Clef ID Début De Fonction Boucle Principale" FOREIGN KEY ("ID Début De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE NO ACTION,
  CONSTRAINT "Clef ID Fin De Fonction Boucle Principale" FOREIGN KEY ("ID Fin De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE SET DEFAULT
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableDegrésD'Analyses"
  OWNER TO vincent;

-- Index: public."fki_A Pour But l'ID Fin De Fonction Boucle Principale"

-- DROP INDEX public."fki_A Pour But l'ID Fin De Fonction Boucle Principale";

CREATE INDEX "fki_A Pour But l'ID Fin De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID degrés");

-- Index: public."fki_Clef ID Début De Fonction Boucle Principale"

-- DROP INDEX public."fki_Clef ID Début De Fonction Boucle Principale";

CREATE INDEX "fki_Clef ID Début De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID Début De Fonction Boucle Principale");

-- Index: public."fki_Clef ID Fin De Fonction Boucle Principale"

-- DROP INDEX public."fki_Clef ID Fin De Fonction Boucle Principale";

CREATE INDEX "fki_Clef ID Fin De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID Fin De Fonction Boucle Principale");

-------------------------------------------------------------------------------------------

-- Constraint: public."ClefTableDegrésD'Analyses"

-- ALTER TABLE public."TableDegrésD'Analyses" DROP CONSTRAINT "ClefTableDegrésD'Analyses";

ALTER TABLE public."TableDegrésD'Analyses"
  ADD CONSTRAINT "ClefTableDegrésD'Analyses" PRIMARY KEY("ID degrés");

-------------------------------------------------------------------------------------------

-- Foreign Key: public."Clef ID Début De Fonction Boucle Principale"

-- ALTER TABLE public."TableDegrésD'Analyses" DROP CONSTRAINT "Clef ID Début De Fonction Boucle Principale";

ALTER TABLE public."TableDegrésD'Analyses"
  ADD CONSTRAINT "Clef ID Début De Fonction Boucle Principale" FOREIGN KEY ("ID Début De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE NO ACTION;
-- Foreign Key: public."Clef ID Fin De Fonction Boucle Principale"

-------------------------------------------------------------------------------------------

-- ALTER TABLE public."TableDegrésD'Analyses" DROP CONSTRAINT "Clef ID Fin De Fonction Boucle Principale";

ALTER TABLE public."TableDegrésD'Analyses"
  ADD CONSTRAINT "Clef ID Fin De Fonction Boucle Principale" FOREIGN KEY ("ID Fin De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE SET DEFAULT;

------------------------------table2-------------------------------------------------------------

-- Table: public."TableDébutFonctionBoucleProcéssusPrincipal"

-- DROP TABLE public."TableDébutFonctionBoucleProcéssusPrincipal";

CREATE TABLE public."TableDébutFonctionBoucleProcéssusPrincipal"
(
  "ID Début De Fonction Boucle Principale" bigint NOT NULL DEFAULT nextval('"IDDebutFonctionBoucleProcessu_ID Debut De Fonction Boucle P_seq"'::regclass),
  "Date Début Fonction Boucle Principale" timestamp with time zone[],
  "Début Fonction Boucle Procéssus Principal" bigint[],
  CONSTRAINT "ClefPrimaireTableDébutFonctionBoucleProcessusPrincipal" PRIMARY KEY ("ID Début De Fonction Boucle Principale")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableDébutFonctionBoucleProcéssusPrincipal"
  OWNER TO vincent;

-- Index: public."IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal"

-- DROP INDEX public."IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal";

CREATE UNIQUE INDEX "IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal"
  ON public."TableDébutFonctionBoucleProcéssusPrincipal"
  USING btree
  ("ID Début De Fonction Boucle Principale");

-------------------------------------------------------------------------------------------

-- Constraint: public."ClefPrimaireTableDébutFonctionBoucleProcessusPrincipal"

-- ALTER TABLE public."TableDébutFonctionBoucleProcéssusPrincipal" DROP CONSTRAINT "ClefPrimaireTableDébutFonctionBoucleProcessusPrincipal";

ALTER TABLE public."TableDébutFonctionBoucleProcéssusPrincipal"
  ADD CONSTRAINT "ClefPrimaireTableDébutFonctionBoucleProcessusPrincipal" PRIMARY KEY("ID Début De Fonction Boucle Principale");

-----------------------------table3--------------------------------------------------------------

-- Table: public."TableFinDeFonctionBoucleProcessusPrincipal"

-- DROP TABLE public."TableFinDeFonctionBoucleProcessusPrincipal";

CREATE TABLE public."TableFinDeFonctionBoucleProcessusPrincipal"
(
  "Date De Fin De Procéssus Boucle Procéssus Principal" timestamp with time zone[],
  "ID Fin De Fonction Boucle Principale" bigint NOT NULL DEFAULT nextval('"TableFinDeFonctionBoucleProce_ID Fin De Fonction Boucle Pri_seq"'::regclass),
  "Fin De Fonction Boucle Principale" text[],
  "ID degrés" bigint NOT NULL DEFAULT nextval('"TableFinDeFonctionBoucleProcessusPrincipal_ID degrés_seq"'::regclass),
  CONSTRAINT "ClefTableFinDeFonctionBoucleProcessusPrincipal" PRIMARY KEY ("ID Fin De Fonction Boucle Principale")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableFinDeFonctionBoucleProcessusPrincipal"
  OWNER TO vincent;

-------------------------------------------------------------------------------------------

-- Constraint: public."ClefTableFinDeFonctionBoucleProcessusPrincipal"

-- ALTER TABLE public."TableFinDeFonctionBoucleProcessusPrincipal" DROP CONSTRAINT "ClefTableFinDeFonctionBoucleProcessusPrincipal";

ALTER TABLE public."TableFinDeFonctionBoucleProcessusPrincipal"
  ADD CONSTRAINT "ClefTableFinDeFonctionBoucleProcessusPrincipal" PRIMARY KEY("ID Fin De Fonction Boucle Principale");

-----------------requette sql--------------------------------------------------------------------------

SELECT 
  "TableDegrésD'Analyses"."ID degrés", 
  "TableDegrésD'Analyses"."Degrés", 
  "TableDegrésD'Analyses"."ID Début De Fonction Boucle Principale"
FROM 
  public."TableDegrésD'Analyses";

INSERT INTO "TableDegrésD'Analyses"("ID degrés","Degrés") VALUES (1,1)
    ON CONFLICT ("ID degrés") DO NOTHING;

------------------reponse--------------------------------------------------------------------------------------

RREUR:  une instruction insert ou update sur la table « TableDegrésD'Analyses » viole la contrainte de clé
étrangère « Clef ID Début De Fonction Boucle Principale »
DÉTAIL : La clé (ID Début De Fonction Boucle Principale)=(11) n'est pas présente dans la table « TableDegrésD'Analyses ».

********** Erreur **********

ERREUR: une instruction insert ou update sur la table « TableDegrésD'Analyses » viole la contrainte de clé
étrangère « Clef ID Début De Fonction Boucle Principale »
État SQL :23503
Détail :La clé (ID Début De Fonction Boucle Principale)=(11) n'est pas présente dans la table « TableDegrésD'Analyses ».

Hors ligne

#2 15/02/2018 14:09:42

gleu
Administrateur

Re : tables avec des clefs étrangères que cherche a remplir.

Je pense que, pour espérer qu'on puisse vous répondre, il faudrait que les différents scripts SQL donnés ici soient dans le bon ordre pour pouvoir être rejoués sans erreur. Là, j'exécute le premier et j'ai une erreur à la première création de table. L'erreur indique qu'il ne trouve pas une table qui est référencé par une clé étrangère, il est tout à fait possible qu'elle soit créé par un des autres scripts qui suivent, mais clairement, je ne vais pas passer du temps à essayer de les ré-ordonner. Merci de fournir un script complet qui reproduit le problème qu'on puisse tester facilement.


Guillaume.

Hors ligne

#3 15/02/2018 20:29:34

vincent HARDY
Membre

Re : tables avec des clefs étrangères que cherche a remplir.

Merci pour votre aide : après avoir enlever nextval('"TableDegrésD''Analyses_Degrés_seq"'::regclass) par tout et les NOT NULL, j'obtiens Query returned successfully: one row affected, 127 msec execution time. smile

-------------------------table1------------------------------------------------------------------

-- Table: public."TableDegrésD'Analyses"

-- DROP TABLE public."TableDegrésD'Analyses";

CREATE TABLE public."TableDegrésD'Analyses"
(
  "ID degrés" bigint NOT NULL,
  "Degrés" bigint NOT NULL,
  "Date Début Blocage" timestamp with time zone[],
  "Date de Création" timestamp with time zone[],
  "Date Fin Du Blocage" timestamp with time zone[],
  "ID Début De Fonction Boucle Principale" bigint NOT NULL,
  "ID Fin De Fonction Boucle Principale" bigint NOT NULL,
  "ID Procéssus Principal" bigint NOT NULL,
  CONSTRAINT "ClefTableDegrésD'Analyses" PRIMARY KEY ("ID degrés"),
  CONSTRAINT "Clef ID Début De Fonction Boucle Principale" FOREIGN KEY ("ID Début De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE NO ACTION,
  CONSTRAINT "Clef ID Fin De Fonction Boucle Principale" FOREIGN KEY ("ID Fin De Fonction Boucle Principale")
      REFERENCES public."TableDegrésD'Analyses" ("ID degrés") MATCH FULL
      ON UPDATE SET DEFAULT ON DELETE SET DEFAULT
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableDegrésD'Analyses"
  OWNER TO vincent;

-- Index: public."fki_A Pour But l'ID Fin De Fonction Boucle Principale"

-- DROP INDEX public."fki_A Pour But l'ID Fin De Fonction Boucle Principale";

CREATE INDEX "fki_A Pour But l'ID Fin De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID degrés");

-- Index: public."fki_Clef ID Début De Fonction Boucle Principale"

-- DROP INDEX public."fki_Clef ID Début De Fonction Boucle Principale";

CREATE INDEX "fki_Clef ID Début De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID Début De Fonction Boucle Principale");

-- Index: public."fki_Clef ID Fin De Fonction Boucle Principale"

-- DROP INDEX public."fki_Clef ID Fin De Fonction Boucle Principale";

CREATE INDEX "fki_Clef ID Fin De Fonction Boucle Principale"
  ON public."TableDegrésD'Analyses"
  USING btree
  ("ID Fin De Fonction Boucle Principale");

-------------------------------------------------------------------------------------------
-----------------------------table2-------------------------------------------------------------

-- Table: public."TableDébutFonctionBoucleProcéssusPrincipal"

-- DROP TABLE public."TableDébutFonctionBoucleProcéssusPrincipal";

CREATE TABLE public."TableDébutFonctionBoucleProcéssusPrincipal"
(
  "ID Début De Fonction Boucle Principale" bigint NOT NULL,
  "Date Début Fonction Boucle Principale" timestamp with time zone[],
  "Début Fonction Boucle Procéssus Principal" bigint[],
  CONSTRAINT "ClefPrimaireTableDébutFonctionBoucleProcessusPrincipal" PRIMARY KEY ("ID Début De Fonction Boucle Principale")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableDébutFonctionBoucleProcéssusPrincipal"
  OWNER TO vincent;

-- Index: public."IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal"

-- DROP INDEX public."IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal";

CREATE UNIQUE INDEX "IndexPrimaireTableDébutFonctionBoucleProcessusPrincipal"
  ON public."TableDébutFonctionBoucleProcéssusPrincipal"
  USING btree
  ("ID Début De Fonction Boucle Principale");

-------------------------------------------------------------------------------------------

-----------------------------table3--------------------------------------------------------------

-- Table: public."TableFinDeFonctionBoucleProcessusPrincipal"

-- DROP TABLE public."TableFinDeFonctionBoucleProcessusPrincipal";

CREATE TABLE public."TableFinDeFonctionBoucleProcessusPrincipal"
(
  "Date De Fin De Procéssus Boucle Procéssus Principal" timestamp with time zone[],
  "ID Fin De Fonction Boucle Principale" bigint NOT NULL,
  "Fin De Fonction Boucle Principale" text[],
  "ID degrés" bigint NOT NULL,
  CONSTRAINT "ClefTableFinDeFonctionBoucleProcessusPrincipal" PRIMARY KEY ("ID Fin De Fonction Boucle Principale")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public."TableFinDeFonctionBoucleProcessusPrincipal"
  OWNER TO vincent;

-------------------------------------------------------------------------------------------

-----------------requette sql--------------------------------------------------------------------------

SELECT 
  "TableDegrésD'Analyses"."ID degrés", 
  "TableDegrésD'Analyses"."Degrés", 
  "TableDegrésD'Analyses"."ID Début De Fonction Boucle Principale"
FROM 
  public."TableDegrésD'Analyses";

INSERT INTO "TableDegrésD'Analyses"("ID degrés","Degrés") VALUES (1,1)
    ON CONFLICT ("ID degrés") DO NOTHING;

------------------reponse--------------------------------------------------------------------------------------
SELECT
  "TableDegrésD'Analyses"."ID degrés",
  "TableDegrésD'Analyses"."Degrés",
  "TableDegrésD'Analyses"."ID Début De Fonction Boucle Principale"
FROM
  public."TableDegrésD'Analyses";

INSERT INTO "TableDegrésD'Analyses"("ID degrés","Degrés") VALUES (1,1)
    ON CONFLICT ("ID degrés") DO NOTHING;

Query returned successfully: one row affected, 127 msec execution time.

Hors ligne

Pied de page des forums