1 | | Replying to [ticket:226 marion]: |
2 | | > Dans les bonnées BRESLE j'ai : |
3 | | > |
4 | | > -- une marque 3058 de type Carlin |
5 | | > -- une autre 3058 de type Spaghetti. |
6 | | > |
7 | | > 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). |
8 | | > Cette clé primaire est la clé étrangère de la table tj_actionmarquage_act. |
9 | | > 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. |
10 | | |
11 | | Voici le code SQL pour faire cela (à lancer sur tous les schémas dont chaque utilisateur dispose hors schéma public, ref et topology) : |
12 | | |
13 | | select ref.updatesql('{"bgm","charente","fd80","logrami","migado","migradour","nat","ngm","pmp","saumonrhin","seinormigr","smatah"}', |
14 | | ' |
15 | | --Ajout de la colonne act_nmq_code dans tj_actionmarquage |
16 | | ALTER TABLE tj_actionmarquage_act ADD COLUMN act_nmq_code character varying(4); |
17 | | |
18 | | --Mise à jour de ce champ par rapport au champ mqe_nmq_code |
19 | | UPDATE tj_actionmarquage_act SET act_nmq_code=m.mqe_nmq_code FROM t_marque_mqe m where act_mqe_reference=m.mqe_reference; |
20 | | |
21 | | --On ajoute une contrainte not null sur le champ act_nmq_code |
22 | | ALTER TABLE tj_actionmarquage_act ALTER COLUMN act_nmq_code SET NOT NULL; |
23 | | |
24 | | --On supprime les contrainte de clé étrangère / clé primaire |
25 | | ALTER TABLE tj_actionmarquage_act DROP CONSTRAINT c_fk_act_mqe_reference; |
26 | | ALTER TABLE t_marque_mqe DROP CONSTRAINT c_pk_mqe; |
27 | | |
28 | | --On les refait en ajoutant ce champ à la clé |
29 | | ALTER TABLE t_marque_mqe ADD CONSTRAINT c_pk_mqe PRIMARY KEY (mqe_reference, mqe_nmq_code, mqe_org_code); |
30 | | ALTER TABLE tj_actionmarquage_act ADD CONSTRAINT c_fk_act_mqe_reference FOREIGN KEY (act_mqe_reference, act_nmq_code, act_org_code) |
31 | | REFERENCES t_marque_mqe (mqe_reference, mqe_nmq_code, mqe_org_code) MATCH SIMPLE |
32 | | ON UPDATE CASCADE ON DELETE NO ACTION; |
33 | | '); |
34 | | |