Champs d'identification unique (FireDAC)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Modification des données (FireDAC)

Informations générales

Les colonnes d'identification unique sont un jeu de colonnes qui identifient de manière unique chaque enregistrement d'un ensemble de données. Lorsqu'un ensemble de données est une table SELECT unique, les colonnes d'identification unique sont la clé primaire d'une table FROM. Le plus souvent, le champ auto-incrémenté est la clé primaire de la table.

Usage

Les champs d'identification unique sont utilisés pour construire des clauses WHERE pour :

  • valider les mises à jour (Edit/Post) et les supprimer (Delete) d'un ensemble de données, lorsque UpdateOptions.UpdateMode est sur upWhereKeyOnly ou upWhereChanged ;
  • actualiser l'enregistrement en cours d'un ensemble de données (RefreshRecord) ;
  • sélectionner des valeurs BLOB différées (FetchBlobs) et des ensembles de données imbriqués (FetchDetails).

Approvisionnement

TFDQuery, TFDTable, TFDMemTable et TFDCommand extraient automatiquement les colonnes d'identification unique (mkPrimaryKeyFields) de la table principale (la première) dans les instructions SELECT ... instructions FROM ..., lorsque fiMeta est inclus dans FetchOptions.Items. Remarque :

  • l'interrogation mkPrimaryKeyFields peut prendre du temps ;
  • l'application peut avoir besoin de spécifier explicitement des colonnes d'identification unique, lorsque FireDAC échoue à les déterminer correctement.

Pour spécifier explicitement des colonnes, excluez fiMeta de FetchOptions.Items, et utilisez l'une des options suivantes :

Lorsque l'application crée des champs persistants, TField.ProviderFlags est initialement défini correctement. Par la suite, la configuration automatique du champ n'est pas effectuée lorsque la structure de la base de données ou la requête est modifiée. Vous devez mettre à jour ProviderFlags manuellement pour ajuster la liste de colonnes. Par ailleurs, si la clé primaire est constituée de plusieurs champs, tous doivent être inclus dans des champs persistants.

Colonnes d'identification de ligne

Sinon, il est possible d'inclure une colonne d'identification de ligne dans la liste SELECT. Lorsque FireDAC trouve de telles colonnes, il n'extrait pas les métadonnées de mkPrimaryKeyFields ; il utilise cette colonne. Les SGBD supportés sont les suivants :

SGBD Colonne d'identification de ligne
Firebird DB_KEY
Informix ROWID
Interbase DB_KEY / RDB$DB_KEY
Oracle ROWID
PostgreSQL OID. La table doit être créée avec des OID (identificateurs d'objet).
SQLite ROWID

Par exemple, sur Oracle :

 SELECT T.*, ROWID FROM Orders T

Voir aussi