Aller au contenu principal

Créer depuis une table de base

Quand la table existe déjà dans la base, le chemin le plus rapide est l'Assistant CRUD. Il suffit de lui désigner un schéma et une table, de cocher les colonnes que l'écran doit afficher et de marquer celles qui identifient une ligne : Liberty écrit alors les quatre requêtes (_get, _put, _post, _delete) — y compris la reliaison :NAME_ORIGINAL sur UPDATE pour que l'Enregistrer d'un dialogue sache quelle ligne retrouver. Les identifiants de colonnes et noms de liaison générés sont en majuscules (comme l'assistant SELECT) : les colonnes JDE ressortent en majuscules.

C'est le chemin recommandé pour toute table déjà existante. À éviter uniquement quand la table n'existe pas encore ou quand le SQL doit être écrit à la main — voir Créer une requête personnalisée.


Où le trouver​

L'assistant est accessible depuis Liberty Next → Construire → Connecteurs :

  1. Choisir un connecteur dans la liste de gauche.
  2. Dans la barre de modes du volet droit, choisir Tables.
  3. Cliquer sur + Ajouter des requêtes en haut à droite.
  4. Une fenêtre de choix s'ouvre. Choisir Générer depuis la BDD.

L'assistant parcourt alors le pool du connecteur (GET /api/sql/<connector>/_schemas) et présente les schémas trouvés.


La disposition de l'assistant​

Générer une table depuis la base · [connectors.crm]1 · SCHÉMApublic ▾2 · FILTRE PAR NOMcustomers%3 · TABLEcustomers ▾4 · COLONNES · 7 / 9☑ customer_idINT4CLÉ☑ nameVARCHAR(120)☑ emailVARCHAR(255)☑ created_atTIMESTAMP☑ owner_idINT4☑ statusVARCHAR(20)☑ regionVARCHAR(60)☐ notes_blobBLOB☐ search_vectorTSVECTOR5 · REQUÊTES À ÉMETTRE☑ SELECT☑ UPDATE☑ INSERT☑ DELETE6 · APERÇU EN DIRECTGETcustomers_getSELECT customer_id, name, email, created_at, owner_id, status, regionFROM public.customersPUTcustomers_putUPDATE public.customersSET NAME = :NAME, EMAIL = :EMAIL, CREATED_AT = :CREATED_AT, OWNER_ID = :OWNER_ID, STATUS = :STATUS, REGION = :REGIONWHERE CUSTOMER_ID = :CUSTOMER_ID_ORIGINALAnnulerEnregistrer

Étape 1 — Sélectionner un schéma​

Le sélecteur de schéma n'apparaît que si le pool en compte plusieurs. PostgreSQL avec un seul public et SQLite le sautent ; Oracle (plusieurs schémas) l'exige.

L'assistant récupère les schémas de manière différée — l'ouverture initiale liste juste les noms, le parcours table par table d'un schéma n'a lieu qu'une fois le schéma choisi. Sur un pool Oracle volumineux, ce comportement épargne la dizaine de secondes que prendrait un parcours multi-schémas complet.


Étape 2 — Filtrer les noms de tables (facultatif)​

Un motif SQL LIKE (customers%, F00%) saisi dans le champ Filtre par nom restreint la liste des tables côté serveur, avant que l'introspection des colonnes ne s'exécute pour chacune. Pour des pools qui comptent des milliers de tables, c'est la différence entre un sélecteur réactif et un sélecteur lent.

Le filtre est temporisé — tapez librement ; la requête part environ 350 ms après l'arrêt de la frappe.


Étape 3 — Sélectionner la table​

Une fois la table choisie, l'assistant récupère ses colonnes et pré-remplit deux ensembles :

EnsembleRègle de pré-remplissage
InclusesToutes les colonnes sont cochées.
ClésToutes les colonnes que la base marque NOT NULL sont cochées.

Ce sont des suppositions — décochez les colonnes à ne pas exposer (BLOB, colonnes d'audit, champs calculés) et confirmez les clés.


Étape 4 — Cocher colonnes et clés​

Chaque ligne de la liste Colonnes porte :

ÉlémentRôle
Case InclureDécochée, la colonne disparaît du SELECT de _get et de l'INSERT de _post. Le dialogue ne la verra pas.
Nom + type de colonneEn lecture seule — proviennent de la base en direct.
Bascule CLÉFixée à droite. Cochée, cette colonne pilote la clause WHERE du _put (avec :NAME_ORIGINAL) et la clause WHERE du _delete.

Une ligne avec au moins une clé est requise pour que UPDATE / DELETE produisent quoi que ce soit. L'assistant refuse d'enregistrer sans cela.


Étape 5 — Choisir les requêtes à émettre​

Quatre cases à cocher — SELECT (_get), UPDATE (_put), INSERT (_post), DELETE (_delete). Cocher celles dont la table a besoin.

MotifÀ cocher
Table de référence en lecture seule.SELECT uniquement.
Table CRUD standard.Les quatre.
Ajouts seulement (journal d'audit).SELECT + INSERT.
Table de référence éditée seulement par INSERT puis purge.SELECT + INSERT + DELETE.

La requête SELECT est toujours émise — au minimum, l'écran a besoin de lire la table.


Étape 6 — Lire l'aperçu, surcharger au besoin​

La colonne de droite affiche le SQL généré pour chaque emplacement CRUD coché, en direct. Chaque aperçu se modifie directement : la modification prime sur la génération automatique tant que la sélection des colonnes ou des clés ne change pas — un changement rétablit la version générée.

Les quatre formes​

-- _get : SELECT direct sur les colonnes incluses
SELECT COL1, COL2, …
FROM <schema>.<table>

-- _post : INSERT lié à des placeholders :col
INSERT INTO <schema>.<table> (COL1, COL2, …)
VALUES (:COL1, :COL2, …)

-- _put : UPDATE des colonnes non-clés, WHERE sur la clé avec :NAME_ORIGINAL
UPDATE <schema>.<table>
SET NON_KEY1 = :NON_KEY1, NON_KEY2 = :NON_KEY2, …
WHERE KEY1 = :KEY1_ORIGINAL
AND KEY2 = :KEY2_ORIGINAL

-- _delete : DELETE sur la clé avec :NAME (le dialogue lie les valeurs actuelles de la ligne)
DELETE FROM <schema>.<table>
WHERE KEY1 = :KEY1
AND KEY2 = :KEY2

Pourquoi :NAME_ORIGINAL sur UPDATE ?​

L'Enregistrer d'un dialogue envoie deux instantanés de chaque colonne clé : la valeur actuelle (:key1) et celle qu'avait la ligne à l'ouverture du dialogue (:key1_ORIGINAL). L'UPDATE filtre sur l'originale pour que la ligne soit retrouvée même quand l'opérateur a modifié la clé elle-même. L'assistant CRUD applique cette convention ; un _put écrit plus tard à la main doit la reproduire.


Étape 7 — Enregistrer​

Le bouton Enregistrer :

  1. Ajoute les requêtes cochées à la liste des requêtes du connecteur.
  2. Sauvegarde le fichier connecteur.
  3. Déclenche un rechargement à chaud — les nouvelles requêtes sont appelables immédiatement.

Les quatre nouvelles requêtes apparaissent dans l'onglet Tables regroupées sous leur nom de base commun, avec les quatre badges d'emplacement CRUD indiquant celles qui ont été émises.


Validation — ce qui bloque l'enregistrement​

ErreurCauseCorrection
Sélectionnez une table.Aucune table sélectionnée.En choisir une.
Nommez la table.Le champ nom de base est vide (déduit du nom de la table ; à effacer pour le remplacer).Saisir un nom de base — lettres, chiffres, tirets bas.
Incluez au moins une colonne.Toutes les colonnes ont été décochées.En cocher au moins une.
La requête de lecture (_get) est obligatoire.SELECT a été décoché.Recochez-le.
Choisissez au moins une colonne clé pour UPDATE / DELETE.UPDATE ou DELETE est coché mais aucune colonne n'a CLÉ activée.Marquer la ou les colonnes clés.
Une requête nommée « X » existe déjà.Le nom de base produit un <base>_get (ou _put / _post / _delete) en collision avec une requête existante sur ce connecteur.Choisir un autre nom de base, ou supprimer d'abord l'ancienne requête.

Résultat​

Pour une table customers avec customer_id comme clé, l'assistant a généré quatre requêtes :

NomTypeUtilisée par
customers_gettable (lecture)La lecture de la grille + formulaire.
customers_puttable (écriture)L'Enregistrer du dialogue (UPDATE).
customers_posttable (écriture)L'Enregistrer du dialogue (INSERT).
customers_deletetable (écriture)L'action Supprimer de la grille.

Elles atterrissent dans l'onglet Tables sur une ligne libellée customers avec les quatre badges GET / PUT / POS / DEL tous verts. L'étape suivante est de construire un écran par-dessus — couverte dans la prochaine section Écrans.


Quand utiliser l'assistant ou écrire à la main​

Utiliser l'assistantÉcrire à la main (Ajouter une requête dans la vue Requêtes)
La table existe en base.La requête est un rapport personnalisé, un agrégat ou un appel de procédure stockée.
Vous voulez les quatre formes CRUD standard.Vous avez besoin d'un JOIN, d'un GROUP BY, d'une CTE RECURSIVE.
Vous partez de zéro et les colonnes sont la source de vérité.Vous voulez une requête qui ne se projette pas 1 pour 1 sur une table.

L'assistant est le bon outil pour 80 % des tables opérationnelles. Les 20 % restants — analytique, rapports, jointures multi-tables — passent par Créer une requête personnalisée.


Et ensuite​