Quelle est la définition d'un index ?
Posté : mer. 29 mai 2013,  11:55:19
				
				Bonjour,
Besoin d'un petit rafraichissement sur la définition d'un index :
Une table : TABLE contient les champs CHAMP_1, CHAMP_2, CHAMP_3.
Cette table a une contrainte de clé primaire sur le CHAMP_1.
Un index : TABLEI01 sur cette table contient les champs : CHAMP_2 et CHAMP_3.
Dans un programme RPGLE, l'index TABLEI01 est déclaré.
Un format est préparé avec comme valeurs :
dans CHAMP_1 une valeur auto-incrémentée (donc nouvelle),
dans CHAMP_2 et CHAMP_3 des valeurs déjà existantes (c'est à dire que le couple CHAMP_1 et CHAMP_2 existe déjà)
Lors d'un WRITE de l'index TABLEI01 le systeme positionne un indicateur de tentative d'écriture en double.
Ma question est : 
le WRITE de l'index écrit bien toutes les colonnes de la table,
ne tient pas compte de la contrainte de clé primaire de la table,
considère les champs de l'index comme des clés primaires.
Pour faire un WRITE de mon format, faut il déclarer la table dans le RPGLE ou existe t'il un autre moyen ?
			Besoin d'un petit rafraichissement sur la définition d'un index :
Une table : TABLE contient les champs CHAMP_1, CHAMP_2, CHAMP_3.
Cette table a une contrainte de clé primaire sur le CHAMP_1.
Un index : TABLEI01 sur cette table contient les champs : CHAMP_2 et CHAMP_3.
Dans un programme RPGLE, l'index TABLEI01 est déclaré.
Code : Tout sélectionner
     FTABLEI01UF A E           K Disk    Rename(TABLE:TABLEF1)
     F                                     Commit                        dans CHAMP_1 une valeur auto-incrémentée (donc nouvelle),
dans CHAMP_2 et CHAMP_3 des valeurs déjà existantes (c'est à dire que le couple CHAMP_1 et CHAMP_2 existe déjà)
Lors d'un WRITE de l'index TABLEI01 le systeme positionne un indicateur de tentative d'écriture en double.
Code : Tout sélectionner
...
     C                   Write     TABLEF1                            50
      * clé en double
     C   50              Eval      P_Retour = '02'   
...le WRITE de l'index écrit bien toutes les colonnes de la table,
ne tient pas compte de la contrainte de clé primaire de la table,
considère les champs de l'index comme des clés primaires.
Pour faire un WRITE de mon format, faut il déclarer la table dans le RPGLE ou existe t'il un autre moyen ?