Comment suivre de données avec SQL: 2011 tables bitemporal

Parfois, vous voulez savoir à la fois quand un événement a eu lieu dans le monde réel et lorsque cet événement a été enregistré dans la base de données SQL. Pour de tels cas, vous pouvez utiliser une table qui est à la fois une table système versionné et une table de la période d'application en temps. Ces tableaux sont connus comme des tables bitemporal.

Il ya un certain nombre de cas où une table bitemporal pourrait être appelé pour. Supposons, par exemple, que l'un de vos employés se déplace sa résidence à travers la ligne de l'État de l'Oregon à Washington. Vous devez tenir compte du fait que son état retenue d'impôt sur le revenu doit changer la date officielle du déménagement.

Cependant, il est peu probable que la modification de la base de données sera exactement le même jour. Les deux fois, doivent être enregistrées, et une table bitemporal peuvent faire que l'enregistrement très bien. Les Période dossiers système versionné lorsque le changement est devenu connu à la base de données, et la période des enregistrements application de temps lorsque le déménagement ont légalement en vigueur. Voici quelques exemples de code pour créer une telle table:




CREATE TABLE employee_bt (EmpID ENTIER, EmpStart DATE, EmpEnd DATE, EmpDept IntegerPERIOD POUR EmpPeriod (EmpStart, EmpEnd), Sys_Start TIMESTAMP (12) GÉNÉRÉES ALWAYSAS ROW START Sys_End TIMESTAMP (12) GÉNÉRÉES FIN ALWAYSAS ROW, EmpName VARCHAR (30), EmpStreet VARCHAR (40), EmpCity VARCHAR (30), EmpStateProv VARCHAR (2), EmpPostalCode VARCHAR (10), le délai d'system_time (Sys_Start, Sys_End), la clé primaire (EmpID, EPeriod sans superposition), FOREIGN KEY (EDEPT, PÉRIODE EPeriod) Références Dept (deptID, PÉRIODE DPeriod)) avec un système VERSIONING-

Tables Bitemporal servent les fins des deux tables système versionné et tables application en temps. L'utilisateur fournit des valeurs pour le début de la période et de fin colonnes demande-temps. Un INSERT opération dans une telle table définit automatiquement la valeur de la période de temps système de l'horodatage de la transaction. La valeur de la colonne fin de la période système temps est réglée automatiquement à la valeur la plus élevée autorisée pour le type de données de cette colonne.

METTRE À JOUR et EFFACER opérations fonctionnent comme ils le font pour les standards des tables de la période d'application en temps. Comme est vrai avec tables système versionné, METTRE À JOUR et EFFACER opérations affectent uniquement les lignes actuelles, et à chaque opération une rangée historique est automatiquement inséré.

Une requête formulée lors d'une table bitemporal peut spécifier une période application en temps, une période de système versionné, ou les deux. Voici un exemple de la “ à la fois ” cas:

SELECT employee_bt de EmpIDFROM POUR TEMPS DE SYSTEME AS OFTIMESTAMP »15/07/2013 00: 00: 00'WHERE EmpID = 314159 ANDEmpPeriod CONTIENT DATE» 20/06/2013 00: 00: 00'-

» » » » Comment suivre de données avec SQL: 2011 tables bitemporal