Opened 8 years ago

Closed 8 years ago

#226 closed defect (fixed)

Impossibilité d'importer 2 numéros de marque identique pour 2 types de marques différents

Reported by: marion Owned by:
Priority: minor Milestone: 5 Release stacomiR_0.5
Component: database Version: 0.5
Keywords: Cc:

Description (last modified by marion)

Dans les bonnées BRESLE j'ai :

-- une marque 3058 de type Carlin
-- une autre 3058 de type Spaghetti.

A ce jour on ne peut pas rentrer ces 2 marques dans la table t_marque_mqe car la clé primaire correspond à (mqe_reference, mqe_org_code).
Cette clé primaire est la clé étrangère de la table tj_actionmarquage_act.
Si on veut changer cette clé pour faire une contrainte triple du type (mqe_reference,mqe_nmq_code,mqe_org_code) il faut ajouter dans tj_actiomarquage_act la colonne act_mnq_code puis supprimer les contraintes de clé étrangère (tj_actionmarquage_act) et clé primaire (t_marque_mqe) puis les recréer avec les bons champs.

Voici le code SQL pour faire cela (à lancer sur tous les schémas dont chaque utilisateur dispose hors schéma public, ref et topology) :

select ref.updatesql('{"bgm","charente","fd80","logrami","migado","migradour","nat","ngm","pmp","saumonrhin","seinormigr","smatah"}',
'
--Ajout de la colonne act_nmq_code dans tj_actionmarquage
ALTER TABLE tj_actionmarquage_act ADD COLUMN act_nmq_code character varying(4);

--Mise à jour de ce champ par rapport au champ mqe_nmq_code
UPDATE tj_actionmarquage_act SET act_nmq_code=m.mqe_nmq_code FROM t_marque_mqe m where act_mqe_reference=m.mqe_reference;

--On ajoute une contrainte not null sur le champ act_nmq_code
ALTER TABLE tj_actionmarquage_act ALTER COLUMN act_nmq_code SET NOT NULL;

--On supprime les contrainte de clé étrangère / clé primaire
ALTER TABLE tj_actionmarquage_act DROP CONSTRAINT c_fk_act_mqe_reference;
ALTER TABLE t_marque_mqe DROP CONSTRAINT c_pk_mqe;

--On les refait en ajoutant ce champ à la clé
ALTER TABLE t_marque_mqe ADD CONSTRAINT c_pk_mqe PRIMARY KEY (mqe_reference, mqe_nmq_code, mqe_org_code);
ALTER TABLE tj_actionmarquage_act ADD CONSTRAINT c_fk_act_mqe_reference FOREIGN KEY (act_mqe_reference, act_nmq_code, act_org_code) REFERENCES t_marque_mqe (mqe_reference, mqe_nmq_code, mqe_org_code) MATCH SIMPLE ON UPDATE CASCADE ON DELETE NO ACTION;
');

Change History (4)

comment:1 in reply to: ↑ description Changed 8 years ago by marion

Last edited 8 years ago by marion (previous) (diff)

comment:2 Changed 8 years ago by marion

  • Description modified (diff)

comment:3 Changed 8 years ago by marion

  • Description modified (diff)

comment:4 Changed 8 years ago by cedric

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.