accessControl

checkOutObject

Description

Réserve un objet (et tous ses enfants) pour une mise à jour exclusive par la session client actuelle. Empêche un objet (et tous ses parents) d'être extrait de manière exclusive par une autre session si checkOutType=Shared.

accessControl.checkOutObject <result=results> <status=rc> / checkoutParent=TRUE | FALSE, checkOutType="EXCLUSIVE" | "SHARED", ObjectSelector={objType="ACTION" | "ACTIONSET" | "CASLIB" | "COLUMN" | "TABLE", objType-specific-parameters} ;
Paramètres
ParamètreDescription
checkoutParentIndique s'il faut extraire l'objet parent si l'objet spécifié n'existe pas. La valeur par défaut est FALSE.
checkOutTypeSpécifie le type d'extraction. Par défaut, une extraction est exclusive, donc seule la session actuelle peut mettre à jour l'objet spécifié (et ses enfants). Si vous spécifiez 'SHARED', l'extraction ne verrouille pas l'objet ; elle empêche simplement d'autres sessions de verrouiller l'objet (et ses parents).
ObjectSelectorSpécifie le type d'objet que vous souhaitez extraire. La valeur que vous spécifiez pour le paramètre objType détermine les autres paramètres qui s'appliquent.
actionSpécifie le nom de l'action (utilisé avec objType='ACTION').
actionSetSpécifie le nom du jeu d'actions (utilisé avec objType='ACTION' ou 'ACTIONSET').
caslibSpécifie le nom de la caslib (utilisé avec objType='CASLIB', 'TABLE' ou 'COLUMN').
columnSpécifie le nom de la colonne (utilisé avec objType='COLUMN').
tableSpécifie le nom de la table (utilisé avec objType='TABLE' ou 'COLUMN').
Préparation des Données Voir la fiche de ce code dataprep
Création de données de test

Ce bloc de données crée une table simple 'myTable' dans la caslib 'casuser' pour démontrer le verrouillage d'objet. Cette table sera utilisée dans les exemples suivants.

Copié !
1 
2DATA casuser.myTable;
3x=1;
4y=2;
5OUTPUT;
6x=3;
7y=4;
8OUTPUT;
9 
10RUN;
11 

Exemples

Cet exemple montre comment verrouiller de manière exclusive la table 'myTable' dans la caslib 'casuser'. Cela empêche toute autre session de la modifier ou d'obtenir un verrou dessus.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / objectSelector={objType="TABLE", caslib="casuser", TABLE="myTable"};
4 
5RUN;
6 
Résultat :
L'action verrouille la table 'myTable'. Toute tentative de modification ou de verrouillage par une autre session échouera jusqu'à ce que l'objet soit libéré (via checkInAllObjects) ou que la transaction soit terminée (commit ou rollback).

Cet exemple montre comment appliquer un verrouillage partagé sur la caslib 'casuser'. Cela empêche d'autres sessions de la verrouiller de manière exclusive, mais autorise les lectures et d'autres verrous partagés.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / checkOutType="SHARED" objectSelector={objType="CASLIB", caslib="casuser"};
4 
5RUN;
6 
Résultat :
Un verrou partagé est placé sur la caslib 'casuser'. Les autres sessions peuvent lire les données mais ne peuvent pas obtenir un verrou exclusif sur la caslib ou ses tables enfants. Le journal affichera un statut de succès pour l'opération de check-out.

Cet exemple tente de verrouiller la colonne 'y' de 'myTable'. L'option `checkoutParent=TRUE` garantit que si la colonne ne peut être verrouillée individuellement (ou n'existe pas), un verrou sera placé sur son parent, la table 'myTable'.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3ACCESSCONTROL.checkOutObject / checkoutParent=TRUE objectSelector={objType="COLUMN", caslib="casuser", TABLE="myTable", column="y"};
4 
5RUN;
6 
Résultat :
Un verrou exclusif est placé sur la table 'myTable' car le verrouillage au niveau de la colonne n'est pas directement supporté de cette manière, et l'option `checkoutParent` remonte le verrou à l'objet parent le plus proche qui peut être verrouillé. Le journal confirmera le succès de l'opération.

FAQ

Quel est l'objectif de l'action `checkOutObject` ?
Quels sont les principaux paramètres de l'action `checkOutObject` ?
Comment le paramètre `checkOutType` affecte-t-il le verrouillage ?
Que fait le paramètre `checkoutParent` ?
Quels types d'objets peuvent être spécifiés avec le paramètre `ObjectSelector` ?