Aller au contenu

ADDPFCST

Ajouter contrainte fich phys

En bref

La commande ADDPFCST permet d'ajouter des associations de contrainte à un fichier physique particulier.

ADDPFCST se lit ADD (Ajouter) + PFCST. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

ADDPFCST FILE(…) TYPE(…)

Paramètres

  • FILE Fichier obligatoire
  • TYPE Type de contrainte obligatoire
  • KEY Clé de la contrainte
  • CST Nom de la contrainte
  • PRNFILE Fichier parent
  • PRNKEY Clé parente
  • DLTRULE Règle de suppression
  • UPDRULE Règle de mise à jour
  • CHKCST Contrainte de vérification

Astuce : dans une session 5250, tapez ADDPFCST puis F4 pour l'invite de saisie, et F1 sur un paramètre pour son aide.

Aide IBM i de la commande

Texte du F1, IBM i 7.5 en français (bibliothèque QSYS)

Où s'exécute : Tous les environnements (*ALL)
Compatible multitâche : Sous conditions

La commande ADDPFCST permet d'ajouter des associations de contrainte à un fichier physique particulier. Vous pouvez définir quatre types d'association de contrainte : les contraintes référentielles, les contraintes uniques, les contraintes de clé primaire et les contraintes de vérification. Toutes sont définies au niveau du fichier.

Vous pouvez utiliser des associations de contrainte pour définir des relations entre des fichiers. Ces relations sont utilisées par le système lorsque des modifications sont apportées aux fichiers. La définition d'associations de contrainte permet de contrôler l'intégrité référentielle des données en cours de traitement.

Pour qu'il soit possible de définir ou établir une contrainte référentielle, le fichier parent et le fichier dépendant doivent exister. Cependant, si le fichier parent ou le fichier dépendant ne comporte pas de membre, la contrainte est définie mais n'est pas établie.

Lorsqu'une contrainte référentielle est établie, un chemin d'accès est créé ou un chemin d'accès existant dont les attributs correspondent est partagé. Vous pouvez établir jusqu'à 300 associations de contrainte par fichier. En revanche, une seule contrainte de clé primaire est possible.

Vous pouvez enlever une contrainte à l'aide de la commande RMVPFCST. Vous pouvez visualiser toutes les contraintes associées à un fichier dépendant à l'aide de la commande DSPFD (Afficher une description de fichier).

Restrictions :

  • Vous ne pouvez pas ajouter d'association de contrainte à des fichiers système ou à des fichiers décrits dans les programmes.
  • Vous ne pouvez pas ajouter d'association de contrainte à un fichier ouvert par votre travail utilisateur.
  • Les contraintes référentielles ne peuvent pas s'étendre sur plusieurs pools de mémoire secondaire (ASP).
  • Les contraintes ne peuvent pas être ajoutées à un fichier dans la bibliothèque temporaire QTEMP.
  • Si une contrainte référentielle ou de vérification ajoutée avec cette commande comporte des enregistrements dont la vérification est en attente lorsqu'elle est établie, la contrainte passe automatiquement à l'état désactivé.
  • Cette commande est à unités d'exécution protégées sous certaines conditions. Dans le cas de travaux à unités d'exécution multiples, cette commande n'admet pas l'utilisation d'unités d'exécution multiples pour les fichiers répartis. Elle échoue dans le cas de fichiers répartis utilisant une base de données relationnelle de type *SNA.

Paramètres

Mot-clé Description Valeurs possibles Remarques
FILE Fichier Nom d'objet qualifié Obligatoire, positionnel 1
Qualificatif 1: Fichier Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
TYPE Type de contrainte *REFCST, *UNQCST, *PRIKEY, *CHKCST Obligatoire, positionnel 2
KEY Clé de la contrainte Values (jusqu'à 120 répétitions): Nom Facultatif, positionnel 3
CST Nom de la contrainte Valeur caractère, *GEN Facultatif
PRNFILE Fichier parent Nom d'objet qualifié Facultatif
Qualificatif 1: Fichier parent Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
PRNKEY Clé parente Valeurs uniques: *PRNFILE
Autres valeurs (jusqu'à 120 répétitions): Nom
Facultatif
DLTRULE Règle de suppression *CASCADE, *NOACTION, *SETDFT, *SETNULL, *RESTRICT Facultatif
UPDRULE Règle de mise à jour *NOACTION, *RESTRICT Facultatif
CHKCST Contrainte de vérification Valeur caractère Facultatif

Fichier (FILE)

Indique le fichier auquel une contrainte est ajoutée. Il doit s'agir d'un fichier physique comprenant un membre au maximum (MAXMBRS(1)).

Dans le cas de l'ajout d'une contrainte référentielle, ce paramètre précise le fichier dépendant et sa bibliothèque. Le fichier parent est indiqué par le paramètre PRNFILE.

Ce paramètre est obligatoire.

Qualificatif 1 : Fichier

nom
Indiquez le nom du fichier physique.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
La recherche porte sur la bibliothèque en cours du travail. Si celle-ci n'est pas précisée, QGPL est utilisée par défaut.
nom
Indiquez le nom de la bibliothèque sur laquelle doit porter la recherche.

Type de contrainte (TYPE)

Indique le type de la contrainte à ajouter au fichier physique.

Ce paramètre est obligatoire.

*REFCST
Une contrainte référentielle est ajoutée.

Remarques :

  • Les contraintes référentielles ne peuvent pas s'étendre sur plusieurs ASP (pools de mémoire secondaire).
  • Vous ne pouvez pas ajouter de contrainte référentielle tant que le fichier parent ou dépendant est ouvert.
  • Des contraintes référentielles multiples et en double peuvent être ajoutées aux mêmes fichiers dépendant et parent si le nom de contrainte est unique, mais les résultats obtenus peuvent ne pas être ceux escomptés. Pour plus d'informations sur l'ajout de contraintes référentielles multiples ou en double, reportez-vous au manuel Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.
*UNQCST
Une contrainte unique est ajoutée.

Remarque :Les contraintes uniques en double ne sont pas admises.

*PRIKEY
Une contrainte de clé primaire est ajoutée. Il s'agit d'un cas particulier de contrainte unique.

Remarque :Une seule contrainte de clé primaire est admise par fichier physique.

*CHKCST
Une contrainte de vérification est ajoutée.

Clé de la contrainte (KEY)

Définit la clé de contrainte qui précise le chemin d'accès pour le type de contrainte indiqué par le paramètre TYPE. La clé de contrainte consiste en une ou plusieurs zones du fichier indiqué par le paramètre FILE. Dans le cas de contraintes référentielles ou uniques, les zones précisées admettent des valeurs indéfinies (ALWNULL). Dans le cas de contraintes de clé primaire, celles-ci ne sont pas admises.

*REFCST
La clé associée d'une contrainte référentielle est définie. Si une contrainte référentielle est établie, un chemin d'accès à clé associée est ajouté au fichier dépendant.
*UNQCST
La clé d'une contrainte unique est définie. Si une contrainte unique est établie, un chemin d'accès de clé unique est ajouté au fichier physique.
*PRIKEY
La clé d'une contrainte de clé primaire est définie. Si une contrainte de clé primaire est établie, un chemin d'accès de clé primaire est ajouté au fichier physique.
*CHKCST
Le paramètre KEY ne s'applique pas aux contraintes de vérification. Ces contraintes utilisent le paramètre CHKCST pour spécifier une expression de contrainte de vérification.
nom
Indiquez le nom des zones constituant la clé de contrainte que vous définissez. Chaque nom de zone doit exister dans le fichier précisé par le paramètre FILE. Vous pouvez indiquer jusqu'à 120 noms de zone (sans nom en double) en tenant compte des indications suivantes :
  • Les noms de zone sont de type *NAME et comportent 10 caractères au maximum.
  • Les zones doivent être indiquées en ordre croissant.
  • Le nombre maximal d'octets par clé est 32768 (pour plus d'informations sur cette limitation, reportez-vous au manuel Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/).

Nom de la contrainte (CST)

Indique le nom de la contrainte à ajouter.

*GEN
Le nom de la contrainte est généré par le système.
valeur-caractères
Indiquez le nom de la contrainte. Il doit s'agir d'un nom unique dans la bibliothèque contenant le fichier physique précisé par le paramètre FILE. Vous pouvez indiquer 128 caractères au maximum sans délimiteur, ou 258 caractères délimités par des guillemets (").

Remarque :La casse est conservée lorsque des minuscules sont indiquées.

Fichier parent (PRNFILE)

Définit le fichier parent d'une contrainte référentielle. Il doit s'agir d'un fichier physique comprenant un membre au maximum (MAXMBRS(1)).

Qualificatif 1 : Fichier parent

nom
Indiquez le nom du fichier parent de la contrainte référentielle.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
La recherche porte sur la bibliothèque en cours du travail. Si celle-ci n'est pas précisée, QGPL est utilisée par défaut.
nom
Indiquez le nom de la bibliothèque dans laquelle la recherche doit être effectuée.

Clé parente (PRNKEY)

Définit la clé parente qui précise le chemin d'accès du fichier parent d'une contrainte référentielle. Seule la contrainte unique ou la contrainte de clé primaire d'un fichier parent peut servir à définir une contrainte référentielle. La clé parente correspond à une ou plusieurs zones du fichier précisé par le paramètre PRNFILE.

Valeurs uniques

*PRNFILE
Le chemin d'accès du fichier parent est utilisé lorsqu'il s'agit d'une contrainte de clé primaire ou d'une contrainte unique.

Autres valeurs (jusqu'à 120 répétitions)

nom
Indiquez le nom des zones constituant la clé de contrainte que vous définissez. Chaque nom de zone doit exister dans le fichier précisé par le paramètre PRNFILE. Vous pouvez indiquer 120 noms de zone (sans nom en double) en tenant compte des indications suivantes :
  • Les zones peuvent admettre les valeurs indéfinies.
  • Les noms de zone sont de type *NAME et comportent 10 caractères au maximum.
  • Les zones doivent être en ordre croissant.
  • Les attributs de type et de longueur de zone doivent correspondre à ceux des zones indiquées pour la clé associée
  • Le nombre maximal d'octets par clé est 32768 (pour plus d'informations sur cette limitation, reportez-vous au manuel Rubrique Base de données de l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/).

Règle de suppression (DLTRULE)

Indique la règle de suppression utilisée pour une contrainte référentielle existant entre un fichier parent et un fichier dépendant. La règle de suppression limite ou définit l'incidence de la suppression d'un enregistrement dans le fichier parent et dans le fichier dépendant.

*NOACTION
La règle de suppression sans action est appliquée à la fin de la demande de suppression. Les caractéristiques de cette règle sont les suivantes :
  • La suppression d'un enregistrement du fichier parent est admise (n'est pas restreinte) si les données d'une clé parente définie ne correspondent pas à celles d'une clé associée.
  • La suppression d'un enregistrement du fichier parent est restreinte (n'a pas lieu) si les données d'une clé parente définie correspondent à celles d'une clé associée.
*RESTRICT
La règle de suppression restreinte est appliquée au début de la demande de suppression. Les caractéristiques de cette règle sont les suivantes :
  • La suppression d'un enregistrement du fichier parent est admise si les données d'une clé parente définie ne correspondent pas à celles d'une clé associée.
  • La suppression d'un enregistrement du fichier parent est restreinte si les données d'une clé parente définie correspondent à celles d'une clé associée.
*CASCADE
La règle de suppression en cascade est appliquée. La suppression d'un enregistrement du fichier parent entraîne la suppression des enregistrements correspondants du fichier dépendant lorsque les données d'une clé parente définie correspondent à celles d'une clé associée.
*SETNULL
La règle de suppression avec affectation de la valeur indéfinie est appliquée. La suppression d'un enregistrement du fichier parent entraîne la mise à jour des enregistrements correspondants du fichier dépendant si les données d'une clé parente définie correspondent à celles d'une clé associée. Si la zone de la clé associée pour laquelle il y a correspondance admet les valeurs indéfinies, la valeur indéfinie lui est affectée. Sinon, la zone n'est pas mise à jour.

Remarque :Pour que cette règle soit applicable, au moins une zone de la clé associée doit admettre les valeurs indéfinies.

*SETDFT
La règle de suppression avec affectation des valeurs par défaut est appliquée. Ses caractéristiques sont les suivantes :
  • La suppression d'un enregistrement du fichier parent entraîne la mise à jour des enregistrements correspondants du fichier dépendant lorsque les données d'une clé parente définie correspondent à celles d'une clé associée. Les valeurs de la clé associée pour lesquelles il y a correspondance sont fixées par les valeurs par défaut.
  • La valeur de clé associée par défaut doit correspondre à la valeur de clé parente correspondante lorsqu'il n'existe pas de zones qui admettent les valeurs indéfinies.

Règle de mise à jour (UPDRULE)

Indique la règle de mise à jour appliquée à une contrainte référentielle existant entre un fichier parent et un fichier dépendant. La règle de mise à jour restreint ou définit l'incidence de la mise à jour d'un enregistrement du fichier parent et du fichier dépendant.

*NOACTION
La règle de mise à jour sans action est appliquée à la fin de la demande de mise à jour. Les caractéristiques de cette règle sont les suivantes :
  • La mise à jour d'un enregistrement du fichier parent est admise (n'est pas restreinte) si les données d'une clé parente définie ne correspondent pas à celles d'une clé associée.
  • La mise à jour d'un enregistrement du fichier parent est restreinte (n'a pas lieu) si les données d'une clé parente définie correspondent à celles d'une clé associée.
*RESTRICT
La règle de mise à jour restreinte est appliquée au début de la demande de mise à jour. Les caractéristiques de cette règle sont les suivantes :
  • La mise à jour d'un enregistrement du fichier parent est admise si les données d'une clé parente définie correspondent à celles d'une clé associée.
  • La mise à jour d'un enregistrement du fichier parent est restreinte si les données d'une clé parente définie correspondent à celles d'une clé associée.

Contrainte de vérification (CHKCST)

Indique l'expression de contrainte de vérification qui est ajoutée.

valeur-caractères
Indiquez l'expression de contrainte de vérification. L'expression a la même syntaxe que celle utilisée pour les conditions de vérification SQL. Reportez-vous au manuel Rubriques de référence SQL DB2 for i dans l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/, pour obtenir de plus amples informations sur les règles de syntaxe.

Exemples

Exemple 1 : Ajout d'une contrainte unique

ADDPFCST   FILE(MYLIB/LOCATIONS)  TYPE(*UNQCST)  KEY(REGION)
           CST(Personnel_by_REGION)

Cette commande ajoute une contrainte unique au fichier LOCATIONS de la bibliothèque MYLIB. La zone qui définit le chemin d'accès est REGION. Le nom du chemin d'accès est Personnel_by_REGION.

Exemple 2 : Ajout d'une contrainte référentielle

ADDPFCST   FILE(ADMN/PERSONNEL)  TYPE(*REFCST)  KEY(REGION)
           CST(1994Hires)  PRNFILE(MYLIB/LOCATIONS)
           PRNKEY(REGION)  DLTRULE(*CASCADE)
           UPDRULE(*RESTRICT)

Cette commande ajoute une contrainte référentielle au fichier PERSONNEL de la bibliothèque ADMN. La zone définissant le chemin d'accès est REGION, ce qui correspond également à la clé du fichier parent LOCATIONS dans la bibliothèque MYLIB. Le nom du chemin d'accès est 1994Hires. Selon la règle de suppression en cascade, si un enregistrement du fichier LOCATIONS est ultérieurement supprimé et qu'il correspond à un enregistrement du fichier PERSONNEL, cet enregistrement également supprimé du fichier PERSONNEL. Selon la règle de mise à jour restreinte, les modifications ultérieures apportées aux enregistrements de fichier LOCATION définis dans la contrainte sont restreintes au début de la demande de mise à jour.

Exemple 3 : Ajout d'une contrainte de vérification

ADDPFCST   FILE(PERSONNEL/SALARY)  TYPE(*CHKCST)
           CST(limite_maximale_salaire) CHKCST('EMPSAL <= 100000')

Cette commande ajoute une contrainte de vérification au fichier SALARY de la bibliothèque PERSONNEL. La contrainte de vérification fait en sorte que le salaire d'un employé ne dépasse pas 100000.

Messages d'erreur

Messages *ESCAPE

CPF32B0
La contrainte ne peut pas être ajoutée au fichier &1.
CPF32B7
&3 contrainte(s) ajoutée(s) au fichier &1 mais certaines sont erronées.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.