SQL Server 2016 : Les nouveautés

Utiliser les temporal tables

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Apprenez à utiliser en pratique les tables temporelles pour garder l'historique des modifications de données. Voyez comment utiliser, dans un SELECT, les fonctionnalités de vision dans le temps des données des tables temporelles.
08:00

Transcription

Voyons maintenant comment utiliser cette table temporelle. Je vais commencer à insérer des informations d'abord dans ma table Société, je vais créer la Société PachaData Formation de façon à ce qu'on puisse ajouter ensuite des contacts. Je vais regarder quel est le Société ID, c'est 180 que je viens de créer à l'aide de la fonction Scope_Identity qui me donne le numéro d'Identity qui vient d'être inséré dans la table Société. Donc, 180 ça va être mon nouveau Société ID. Je vais créer des contacts, un certain nombre de personnes qui sont en fait les employés avec leurs emails @PachaData Formation, et ma société 180. Je fais un output d'inserted en même temps pour voir les résultats. Donc, voici mes employés, et l'ID commence a 20084, 20085 etc. Je le reprends ici pour insérer finalement mes employés dans la table Contact employé. J'ai noté aussi leur position, voilà qui est fait, et voici ma table Employé avec la directrice, responsable RH, etc. Une hiérarchie, je vois, par exemple, que la responsable RH, le directeur commercial, le DSI, le responsable pédagogique dépendent tous les quatre de la directrice. La date de début à la date de fin puisque elles ont été générées automatiquement, vou vous souvenez de la syntaxe ici. Generated Always as Row Start, eh bien, c'est la date de l'insertion. Comme j'en ai fait un datetime2(2), eh bien, j'ai des informations de secondes ici, sur deux positions. En ce qui concerne la date de fin elle a été choisie automatiquement sur la dernière valeur possible de mon datetime2, c'est-à-dire le 31 décembre 9999. Donc, toutes ces informations sont dans une plage de validité actuelle, si vous voulez. Maintenant je vais quand même faire une petite modification. Avant je vais faire un select dans la table d'historique. Vous voyez que je peux faire un select directement dans ma table d'historique. Vous vous souvenez je la vois ici. Elle est donc tout à fait disponible pour des requêtes directes. Mais normalement je n'ai pas besoin d'y accéder directement. Vous allez voir. Je vais faire un update et dire que l'employé Contact ID 20100, c'est-à-dire l'analyste, eh bien, ne va plus dépendre de 20099, le chef de projet. Mais il va dépendre de 20087 qui est le DSI. Donc, cet analyste ne dépend plus de son chef de projet, il va directement dépendre du directeur du système d'information. Mon update, bien entendu, a fonctionné, et si je regarde maintenant les informations, je vois que l'amalyste dépend du DS. Qu'est-ce qui s'est passé dans ma table d'archives ? Je vais regarder. J'ai maintenant automatiquement une ligne qui a été déplacée pour dire qu'entre cette date de début et cette date de fin, eh bien, la position analyste, son chef c'était 20099. Donc, toute l'historique est maintenue dans cette table d'historique en jouant avec des dates de début et des dates de fin qui sont gérées par le système et mises à jour par SQL server, sans que j'ai besoin de m'en occuper. Donc, déjà ça, c'est très bien mais c'est encore mieux parce que vous avez la possibiliteé de remonter dans le temps grâce aux Temporal Tables. Ma requête qui est ici me retourne le chef actuel de l'analyste. Mais je peux faire une requête de ce type-ci. Je vais dire : select from contact employé for system_time as of. Et donc, je vais revoir où j'en suis dans mon historique, et je vais reprendre ma date de début ici, la reprendre ici, approximativement et je vais mettre à 11h 25 : 49. Donc, ce que je dis dans mon From, c'est prends-moi cette table, mais considère une vision dans le temps de cette table à cette date. Maintenant la table va me retourner des informations qui ne sont pas les informations actuelles mais les informations à ce moment précisement. Et je vais lier à la table employé pour avoir le chef, etc. Et voyons ce que ça me donne. Eh bien, j'ai fait un double lien ici pour dire l'employé actuellement voilà sa position, son chef, voilà sa position, et le chef de son chef, voilà sa position. Et je vois, donc, qu'a cette période le chef de l'analyste c'était le chef de projet. Je vais faire une autre modification pour rendre ça plus claire. Donc, mode ESI c'est 20087, je vais changer son libelle, sa position pour dire qu'il n'est plus DSI mais il s'appelle maintenant responsable informatique, OK. Donc, si je regarde la nouvelle information l'employé à ce moment-là répondait au chef de projet et le chef de projet répond au responsable informatique. Mais pour mon C2 ici, c'est-à-dire le responsable de celui-ci eh bien, j'aimerais savoir, je vais me rajouter For System_Time As Of également. Je vais le rajouter ici, voilà, j'enlève ca qui 'est pas nécessaire. Et je vais me retrouver avec une vision historique sur cet employé, mais aussi une vision historique ici sur cette information pour dire qu'à ce moment-là lui, dépendait du chef de projet, et le chef de projet dépend de quelqu'un qui s'appelait à l'époque DSI dont la position était à l'époque DSI. Bon, ceci c'est pour vous montrer que vous pouvez table par table jouer dans une requête avec des jointures sur des positions temporelles différentes. Pour dire voilà, la relation entre une table actuelle et une table temporelle se fait sur la valeur actuelle des données de la table temporelle ou sur une valeur à un certain moment. Et non seulement cette vision temporelle, vous pouvez la voir à une date précise, mais vous pouvez aussi utiliser une syntaxe qui dit From tout dans une plage temporelle donnée qui va vous retourner les différentes possibilités ou bien à between ou bien à content in où les valeurs sont contenues entre deux dates ou bien en All pour dire moi, je veux toute l'historique de ces données sur cette table. Donc, vous pouvez récupérer la vision actuelle, une vision dans le passé en remontant dans le temps quelque sorte, ou bien une plage de validité pour voir toutes les possibilités, tous les changement qui ont été faits sur une ligne ou plusieurs lignes dans cette plage de temps. Vous voyez que c'est très très puissant et que ça va vous permettre d'enrichir considérablement vos données historiques et les requêtes que vous pouvez faire sur ce type de données.

SQL Server 2016 : Les nouveautés

Découvrez les nouveautés de SQL Server 2016. Voyez les options de configuration limitées aux bases de données, le chiffrage de données à partir des applications clientes, etc.

2h26 (27 vidéos)
Aucun commentaire n´est disponible actuellement

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !