Bonjour,
Mes Refrences ont des noms de contrainte par defaut de cette facon:
FK_<nom table>_REFERENCE_<nom table>
Comment puis je changer la generation des nom de contrainte par defaut ?
Merci
Bonjour,
Mes Refrences ont des noms de contrainte par defaut de cette facon:
FK_<nom table>_REFERENCE_<nom table>
Comment puis je changer la generation des nom de contrainte par defaut ?
Merci
Bonsoir AAAWBBBWCCC,
Je comprends votre problème, car j’y ai été confronté, aussi ai-je décidé de creuser. Je vous fait part des résultats de mes recherches...
A titre d’exemple, J’ai une table Boisson et une table Entree entre lesquelles est établie une relation nommée FaireEntrer :
Génération SQL (Microsoft SQL Server 2000) :
Le nom de contrainte FK_Entree_Faireentr_Boisson ne me convient pas, je souhaite faire disparaître les 3 premiers caractères "FK_"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Create Table Boisson ( IdBoisson Int Not null, NomBoisson Varchar(48) Not null, Constraint PK_Boisson Primary Key (IdBoisson) ); Create Table Entree ( IdBoisson Int Not null, IdEntree Int Not null, Date Datetime Not null, Quantite Int Not null, Constraint PK_Entree Primary Key (IdBoisson, IdEntree), Constraint FK_Entree_Faireentr_Boisson Foreign Key (IdBoisson) References Boisson (IdBoisson) On Delete Cascade );
Je procède ainsi :
1) Barre d’outils \ SGBD \ Éditer le SGBD courant (Microsoft SQL Server 2000).
Dans l’arborescence, clic sur Script \ Objects \ Reference \ ConstName ce qui provoque l’affichage du modèle de nom de contrainte généré pour l'instruction "Create Table Entree" :
2) Je vire les 3 premiers caractères, comme souhaité.
3) quand PowerAMC pose la question :
Prudemment, je réponds Non.
Je pense que si vous répondez Oui, vous avez intérêt à d’abord sauvegarder le fichier de ressources concerné...
Ayant répondu Non, j’ai observé qu’en sauvegardant le MPD puis en l’ouvrant à nouveau, les modifs sont toujours actives. En revanche, quand je ferme PowerAMC, elles sont perdues.
Plus avant. Je raffine mes options...
=>
Déchiffrage de la chaîne de caractères "FK_%.c8:CHILD%_%.c9:REFR%_%.c8:PARENT%"
Par référence aux paramètres dans l’aide :
"FK_" : Constante
"%.c8:CHILD%" : ".c8:" signifie : Initiale en majuscule et les lettres suivantes en minuscules, à concurrence de 8 caractères maxi (cf. référence (2) ci-dessous).
"CHILD" Variable utilisée pour générer le nom de la table enfant (en l’occurrence : Entree). (cf. référence (1)).
Comme l’initiative de l’outil ne me convient pas, parce que je veux voir une génération de code SQL avec très exactement les majuscules et minuscules que j’ai choisies, j’élimine la mise en forme en codant ainsi :
"%CHILD%" au lieu de "%.c8:CHILD%".
"_" : Constante
"%.c9:REFR%" : Code généré pour la référence FaireEntrer : "Entree_Faireentr". (cf. référence (1)). Je remplace par "%REFRNO%", car je peux ainsi numéroter les contraintes plutôt que les nommer, ce qui n’est pas inutile quand il en existe plus d’une entre 2 tables (nomenclatures par exemple) et que l’on n’a pas envie de voir figurer le nom de la contrainte.
"%.c8:PARENT%" : Code généré pour la table parent. (cf. référence (1)). Comme pour CHILD, je vire ".c8:"
Puis je permute "%REFRNO%" et "%PARENT%". Au final, la contrainte
FK_Entree_Faireentr_Boisson
est devenue la suivante :
Entree_1_Boisson
Modèle final de nom de contrainte :
Références de l’aide en ligne :
(1) PowerAMC MPD - Guide de l'utilisateur \ CHAPITRE 14. Variables dans PowerAMC \ Liste des variables de PowerAMC \ Variables de référence.
(2) PowerAMC MPD - Guide de l'utilisateur \ CHAPITRE 14. Variables dans PowerAMC \ Liste des variables de format de PowerAMC.
A vous de jouer !
Si la l'élément constname n'apparait pas, faite un clic droit sur Référence -> Ajouter des éléments... -> Cochez constname
Bonjour,
J'ai le même problème de nommage des contraintes, mais j'utilise PowerAMC v6.
Est ce que quelqu'un sait faire cette manipulation avec cette version de PowerAMC ?
Je suis sur Power AMC 12. Et j'ai le même problème.
Je n'arrive pas à trouver:
Barre d’outils \ SGBD \ Éditer le SGBD courant (Microsoft SQL Server 2000).
ni
faite un clic droit sur Référence -> Ajouter des éléments... -> Cochez constname
C'est parfait c'est ce que je cherchais ...
Bonjour,
Je cherche à modifier l'affichage des references aussi via ConstName.
Je souhaite avoir : NomCléCible = NomCléSource.
J'ai testé : %.U8:CHILD%(%PKEYCOLUMNS%) = %.U8ARENT%(%FKEYCOLUMNS%) mais ça ne fonctionne pas.
Coment faire ?
Bonsoir,
Il y a comme un hiatus : vous évoquez le nom des clés, tandis que le paramètre PKEYCOLUMNS permet de préciser la liste des noms des colonnes composant la clé primaire d’une table (et que le paramètre FKEYCOLUMNS permet de préciser la liste des noms des colonnes composant une clé étrangère pour cette table).
Pourriez-vous donner un exemple précis de ce que vous attendez ?
N.B. La doc en ligne donne pas mal d'informations.
Bonjour,
Merci fsmrel pour la documentation.
Je souhaite changer l'affichage des références entre deux tables.
Exemple :
TABLE1 (Clé1, Libellé,...)
TABLE2 (Clé2, Libellé, ....)
Actuellement :
Ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part FK_%.c8:CHILD%_%.c9:REFR%_%.c8:PARENT%
Je souhaite avoir un affichage simple et précis des clés qui sont utilisés pour les jointures entre les tables. Pour obtenir un résultat de ce genre :FK_TABLE1_REFR_TABLE2
Faut-il utilisé la notion suivante ?Clé1 = Clé2
ou bien préciser les tables en jeux ?%PKNAME% = %PKNAME%
Merci par avance%CHILD%(%PKNAME%) = %PARENT%(%PKNAME%)
Deux problèmes avec les solutions que vous proposez :
- %PKNAME% ne donne rien pour moi.
- Ce que vous cherchez, "TABLE1(CLE1) = TABLE2(CLE1)" n'est pas un nom de référence valide. Elle génèrerait le script sql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 alter table TABLE2 add constraint TABLE1(CLE1) = TABLE2(CLE1) foreign key (CLE1) references TABLE1 (CLE1)
De plus, ce n'est pas comme ça que fonctionne les clés étangères.
Ce que vous aurez au final, ce n'est pas :
TABLE1(Clé1, Libellé)
TABLE2(Clé2, Libellé)
mais ceci :
TABLE1(Clé1, Libellé)
TABLE2(Clé2, Libellé, Clé1)
Merci shadelv.
Comment faire alors ?
Dans la V12.5, au moment de générer le MPD, sélectionner l'onglet détail.
Par défaut, PowerAMC utilise le template qu'en cas de conflit, et celui-ci est bien insuffisant car ne reprend que 3 lettres de la table parent.
Sélectionner l'option "Toujours utiliser un template" et remplacer le template %.3: PARENT%_%COLUMN% par %PARENT%_%COLUMN% permettra d'avoir :
On peut utiliser aussi %PROLE%_%COLUMN% s'il y a plusieurs liens entre les deux tables. Ça donnerait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TABLE2 (TABLE1_Clé1, Clé1, Libellé)
MCD avec TABLE2 dépendante de l'autre sur ses deux lien :
MPD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 +---------+ RoleA1 RoleA2 +---------+ | TABLE1 | ------------------ | TABLE2 | +---------+ RelationA +---------+ | Clé1 | RelationB | Clé1 | | Libellé | ------------------ | Libellé | +---------+ RoleB1 RoleB2 +---------+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TABLE1 (Clé1, Libellé) TABLE2 (RoleA1_Clé1, RoleB1_Clé1, Clé1, Libellé)
Merci beaucoup shadelv.
Je vais tester ça des que possible
Je viens de remarqué que je n'avais pas poster ma solution. Je ne suis pas passer par une modification du code d'affichage mais un truc plus simple :
Actuel : FK_<nom table>_REFERENCE_<nom table>
Apres : CLE = CLE
Etapes :
- Être sur son diagramme
- Click Droit
- Préférence d'affichage
- Général \ Référence
- Contenu \ Centre
- Choisir : Jointure à la place de "Nom de Contrainte"
Bien sûr, il faut avoir renseigné les colonnes de la table enfant et père.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager