[Base] Impossibilité de créer des relations

[LibreOffice 6.4.6.2 Ubuntu0.20.04.1] [Base]

J’ai un problème avec des tables vierges nouvellement créées que je ne peux pas liées

Dans 2 tables avec un attribut commun “Trigramme” de type Char de longueur 3 il m’est impossible de créer une relation.

Les deux tables ont été créées avec l’assistant avec une clé automatique “ID” elles sont actuellement vierges de données.

Voici le message d’erreur: Code d’erreur: 1

firebird_sdbc error: *unsuccessful metadata update *ALTER TABLE tCompltInfo failed *unknown ISC error 336068626 caused by ‘ALTER TABLE “tCompltInfo” ADD FOREIGN KEY (“Trigramme”) REFERENCES “tStagiaires” (“Trigramme”)’

Voici la base :
NbdTest.odb

{Résolu] merci

Bonjour @ChrisP

Pour montrer à la communauté que la question a trouvé sa réponse, cliquez sur ✓ à côté de la “bonne” réponse, et “votez” en cliquant sur la flèche ^ de toute réponse utile. Ce sont les mécanismes utilisés pour communiquer la qualité des questions et réponses sur ce site. Merci!

Belle journée, Michel

Tous les clics ont été fait mais je ne vois pas le résultat du vote avec la flèche ĥaut . Pourtant j’ai voté. “>5 points…” ?!

Merci @ChrisP

C’est normal : il vous faut au moins 5 point pour pouvoir voter, selon la FAQ.

Belle journée, Michel

Bonjour @ChrisP

Complet remaniement de la réponse après soumission de la base NbdTest

La contrainte UNIQUE appliquée aux deux champs Trigramme autorise la création d’une relation entre les deux tables tStagiaires et tCompltInfo basée sur ces champs.

Je ne sais pas comment appliquer cette contrainte avec l’interface utilisateur graphique de Base. j’utilise le SQL.

1- Supprimer les deux tables tStagiaires et tCompltnfo

2- Actualiser les tables par Affichage>Actualiser les tables

3- Ouvrir la console SQL par Outils>SQL...

4- Dans le volet Commande à exécuter, saisir la commande de création de la table tStagiaires suivante puis cliquer sur Exécuter:

CREATE TABLE "tStagiaires" ("ID" INTEGER PRIMARY KEY
, "Civilités" VARCHAR(50)
, "Prénom" VARCHAR(50)
, "Nom" VARCHAR(50)
, "Notes" VARCHAR(8000)
, "Trigramme" CHAR(3) UNIQUE))

5- Vérifier qu’aucun message d’erreur ne s’affiche dans le volet Etat.

6- Saisir de même la commande de création de la table tCompltInfo :

CREATE TABLE "tCompltInfo" ("ID" INTEGER PRIMARY KEY
, "Photo" BLOB
, "DateNaissance" DATE
, "Trigramme" CHAR(3) UNIQUE
, "Adresse" VARCHAR(200)
, "CodePostal" VARCHAR(20)
, "AdresseCourriel" VARCHAR(50)
, "NuméroTéléphone" VARCHAR(30)
, "NuméroPortable" VARCHAR(30)
, "PaysRégion" VARCHAR(50))

7- Actualiser les tables par Affichage>Actualiser les tables

Vous pouvez désormais créer la relation désirée.

Question de méthodologie, je conserve toutes les requêtes SQL dans une table, ce qui me permet, de créer des bases de données très rapidement et de façon plus souple qu’avec un GUI, en m’assurant de la bonne ergonomie des noms, de l’identité des types de variables qui doivent être identiques… J’y conserve toutes les requêtes d’extraction, de modification de table…

Ci joint la base de données avec les Trigrammes uniques et la table qui contient les deux requêtes de création des deux tables.
NbdTest.odb
NbdTest.ods


Pour montrer à la communauté que la question a trouvé sa réponse, cliquez sur ✓ à côté de la “bonne” réponse, et “votez” en cliquant sur la flèche ^ de toute réponse utile. Ce sont les mécanismes utilisés pour communiquer la qualité des questions et réponses sur ce site. Merci!

Pour tout complément d’information, utilisez les boutons situés en dessous de votre question et éditez votre question ou simplement ajouter un commentaire. SVP ! Ne répondez pas à votre propre question à moins d’y apporter une réelle réponse.

Cordialement, Michel

Merci

Mes deux tables ont une clef générée à la création de type automatique, mais comment puis je rendre Trigramme Unique sans pour autant être une clef primaire. Suis obligé de passer par des commandes SQL.

Si je mets “Trigramme” en clef primaire il me demande d’effacer la clef primaire existante en la recréant je valide l’ID devient un integer sans valeur automatique et il m’envoie le code erreur suivant. Mes tables sont vierges d’informations d’enregistrement.

firebird_sdbc error:
*unsuccessful metadata update
*ALTER TABLE tStagiaires failed
*unknown ISC error 336068738
caused by
‘ALTER TABLE “tStagiaires” DROP CONSTRAINT “INTEG_9”’

En même temps je ne suis pas un expert base de données comme tu as sûrement dû le constater donc, je n’utilise pour l’instant que les assistants où le mode ébauche et la doc…

Merci d’éditer la question et de joindre la base de donnée récalcitrante.