Clause FOR UPDATE

La clause FOR UPDATE verrouille les enregistrements pour des mises à jour positionnées ou des suppressions positionnées via les curseurs SQL. La syntaxe de cette clause est la suivante :

Copier
FOR UPDATE [OF expressions_colonne]

expressions_colonne est une liste de noms de rubriques de la table de base de données que vous souhaitez mettre à jour, séparés par une virgule. Il s'agit d'un argument facultatif et ignoré.

Exemple

Renvoyer tous les enregistrements de la base de données d'employés dont la valeur de la rubrique SALAIRE est supérieure à 20 000 euros.

Copier
SELECT * FROM emp WHERE salaire > 20000 FOR UPDATE OF nom_famille, prénom, salaire

Lorsque chaque enregistrement est récupéré, il est verrouillé. Si vous mettez à jour l'enregistrement ou que vous le supprimez, le verrou est maintenu jusqu'à ce que vous validiez la modification. Sinon, le verrou disparaît lorsque vous passez à l'enregistrement suivant.

Exemples

Utilisation de

Exemple de code SQL

Constante de type texte

Copier
SELECT 'ChienChat' FROM Vendeurs

Constante de type numérique

Copier
SELECT 999 FROM Vendeurs

Constante de type date

Copier
SELECT DATE '2021-06-05' FROM Vendeurs

Constante de type heure

Copier
SELECT TIME '02:49:03' FROM Vendeurs

Constante de type horodatage

Copier
SELECT TIMESTAMP '2021-06-05 02:49:03' FROM Vendeurs

Colonne de texte

Copier
SELECT Nom_Société FROM Informations_Ventes
SELECT DISTINCT Nom_Société FROM Informations_Ventes

colonne de type numérique

Copier
SELECT Quantité FROM Informations_Ventes
SELECT DISTINCT Quantité FROM Informations_Ventes

Colonne de type date

Copier
SELECT Date_Vente FROM Informations_Ventes
SELECT DISTINCT Date_Vente FROM Informations_Ventes

Colonne de type heure

Copier
SELECT Heure_Vente FROM Informations_Ventes
SELECT DISTINCT Heure_Vente FROM Informations_Ventes

Colonne de type horodatage

Copier
SELECT Horodatage_Vente FROM Informations_Ventes
SELECT DISTINCT Horodatage_Vente FROM Informations_Ventes

Colonne Conteneur

Copier
SELECT Brochures_Société FROM Informations_Ventes
SELECT GETAS(Logo_Société, 'JPEG') FROM Informations_Ventes

Remarque  Un conteneur de fichier de base de données est une rubrique qui contient un fichier de base de données FileMaker Pro.

Caractère joker *

Copier
SELECT * FROM Vendeurs
SELECT DISTINCT * FROM Vendeurs

Notes à propos des exemples

Une colonne est une référence à une rubrique dans un fichier de base de données FileMaker Pro. (Cette rubrique peut contenir plusieurs valeurs distinctes).

Le caractère joker (*) est une manière plus courte de dire « tout ». L'exemple SELECT * FROM Vendeurs fait apparaître toutes les colonnes de la table Vendeurs. L'exemple SELECT DISTINCT * FROM Vendeurs fait apparaître toutes les rangées uniques de la table Vendeurs (sans doublons).

  • Le logiciel FileMaker ne stocke pas de données pour les chaînes vides. Les requêtes suivantes ne renvoient donc jamais d'enregistrement :

    Copier
    SELECT * FROM test WHERE c =''
    SELECT * FROM test WHERE c <>''
  • Si vous utilisez SELECT avec des données binaires, vous devez utiliser la fonction GetAs() pour indiquer le flux à renvoyer. Consultez la section « Récupération du contenu d'une rubrique Conteneur : fonctions CAST() et GetAs() » pour plus d'informations.

Récupération du contenu d'une rubrique Conteneur : fonctions CAST() et GetAs()

Depuis une rubrique Conteneur, vous pouvez récupérer des informations de référence de fichier, des données binaires ou des données appartenant à un type de fichier particulier.

  • Pour récupérer des informations de référence de fichier depuis une rubrique Conteneur, comme le chemin d'accès à un fichier, à une image ou à une séquence QuickTime, utilisez la fonction CAST() avec une instruction SELECT.

  • S'il existe des données de fichier ou des données binaires JPEG, l'instruction SELECT avec la fonction GetAS(nom rubrique, 'JPEG') récupère des données au format binaire ; sinon, l'instruction SELECT avec un nom de rubrique renvoie la valeur NULL.

Exemple

Pour récupérer des informations de référence de fichier, utilisez la fonction CAST() avec une instruction SELECT.

Copier
SELECT CAST(Brochures_Société AS VARCHAR) FROM Informations_Ventes

Dans cet exemple :

  • Si vous avez inséré un fichier dans la rubrique Conteneur en utilisant FileMaker Pro, mais que vous avez enregistré uniquement une référence dans le fichier, l'instruction SELECT récupère les informations de référence du fichier comme étant du type SQL_VARCHAR.

  • Si vous avez inséré le contenu d'un fichier dans la rubrique Conteneur en utilisant FileMaker Pro, l'instruction SELECT récupère le nom de ce fichier.

  • Si vous avez importé un fichier dans la rubrique Conteneur depuis une autre application, l'instruction SELECT affiche « ? » (le fichier apparaît sous la forme Untitled.dat dans FileMaker Pro)

Pour récupérer des données binaires, vous pouvez utiliser l'instruction SELECT avec la fonction GetAs() de l'une des façons suivantes :

  • Lorsque vous utilisez la fonction GetAs() avec l'option DEFAULT, vous récupérez le flux maître du conteneur sans devoir définir explicitement le type de flux.

    Exemple

    Copier
    SELECT GetAs(Brochures_Société, DEFAULT) FROM Informations_Ventes
  • Pour récupérer un type de flux individuel depuis un conteneur, utilisez la fonction GetAs() et indiquez le type du fichier en fonction du mode d'insertion des données dans la rubrique Conteneur dans FileMaker Pro.

    Exemples

    Si les données ont été insérées à l'aide de la commande Insérer > Fichier, indiquez 'FILE' dans la fonction GetAs().

    Copier
    SELECT GetAs(Brochures_Société, 'FILE') FROM Informations_Ventes

    Si les données ont été insérées à l'aide de la commande Insérer > Image, faites glisser et déposez le fichier ou copiez-le depuis le Presse-papiers et indiquez l'un des types de fichiers répertoriés dans le tableau ci-dessous, par exemple, 'JPEG'.

    Copier
    SELECT GetAs(Logo_Société, 'JPEG') FROM Icônes_Société

    Type de fichier

    Description

    'GIFf'

    Graphics Interchange Format

    'JPEG'

    Photos

    'TIFF'

    Format de fichier trame pour images numériques

    'PDF '

    Portable Document Format

    'PNGf'

    Format d'image Bitmap