GetReparentedValue (moteur de base de données)
S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Retourne un nœud dont le chemin depuis la racine est celui qui pointe vers newRoot, suivi du chemin à partir de oldRoot.
Syntaxe
-- Transact-SQL syntax
node. GetReparentedValue ( oldRoot, newRoot )
-- CLR syntax
SqlHierarchyId GetReparentedValue ( SqlHierarchyId oldRoot , SqlHierarchyId newRoot )
Remarque
Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.
Arguments
oldRoot
hierarchyid qui est le nœud représentant le niveau de la hiérarchie à modifier.
newRoot
Type hierarchyid qui représente le nœud. Remplacez la section oldRoot du nœud actuel pour déplacer le nœud.
Types de retour
Type de retour SQL Server : hierarchyid
Type de retour CLR : SqlHierarchyId
Remarques
Utilisé pour modifier l’arborescence en déplaçant des nœuds de oldRoot vers newRoot. GetReparentedValue est utilisé pour déplacer un nœud de hiérarchie vers un nouvel emplacement de la hiérarchie. Le type de données hierarchyid représente mais n’applique pas la structure hiérarchique. Les utilisateurs doivent s'assurer que la structure hierarchyid convient au nouvel emplacement. Un index unique sur le type de données hierarchyid peut éviter la duplication des entrées. Pour obtenir un exemple de déplacement d’une sous-arborescence entière, consultez Données hiérarchiques (SQL Server).
Exemples
R. Comparaison de deux emplacements de nœuds
L'exemple suivant montre le hierarchyid actuel d'un nœud. Il montre également ce que serait le type hierarchyid du nœud si vous déplaciez le nœud pour en faire un descendant du nœud @NewParent. Il utilise la méthode ToString()
pour afficher les relations hiérarchiques.
DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ;
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\roberto0' ; -- who is /1/1/
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\wanida0' ; -- who is /2/3/
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,
(@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) ).ToString() AS Proposed_OrgNode_AS_Text,
OrgNode AS Current_OrgNode,
@SubjectEmployee. GetReparentedValue(@OldParent, @NewParent) AS Proposed_OrgNode,
*
FROM HumanResources.EmployeeDemo
WHERE OrgNode = @SubjectEmployee ;
GO
B. Mise à jour d'un nœud à un nouvel emplacement
L'exemple suivant utilise GetReparentedValue()
dans une instruction UPDATE pour déplacer un nœud d'un emplacement à un autre dans la hiérarchie :
DECLARE @SubjectEmployee hierarchyid , @OldParent hierarchyid, @NewParent hierarchyid
SELECT @SubjectEmployee = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ; -- Node /1/1/2/
SELECT @OldParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\roberto0' ; -- Node /1/1/
SELECT @NewParent = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\wanida0' ; -- Node /2/3/
UPDATE HumanResources.EmployeeDemo
SET OrgNode = @SubjectEmployee. GetReparentedValue(@OldParent, @NewParent)
WHERE OrgNode = @SubjectEmployee ;
SELECT OrgNode.ToString() AS Current_OrgNode_AS_Text,
*
FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\gail0' ; -- Now node /2/3/2/
C. Exemple CLR
L’extrait de code suivant appelle la méthode GetReparentedValue () :
this. GetReparentedValue(oldParent, newParent)
Voir aussi
Référence de méthodes de type de données hierarchyid
Données hiérarchiques (SQL Server)
hierarchyid (Transact-SQL)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour