Cómo realizar el seguimiento de datos con SQL: 2011 mesas bitemporales
A veces quieres saber tanto cuando un evento ocurrió en el mundo real y cuando ese evento fue registrado en la base de datos SQL. Para casos como el presente, puede utilizar una tabla que es a la vez una tabla versionada por el sistema y una mesa de período de tiempo de aplicación. Estas tablas se denominan tablas bitemporales.
Hay una serie de casos en los que una mesa bitemporal podría ser llamado para. Supongamos, por ejemplo, que uno de sus empleados se mueve su residencia a través de la frontera del estado de Oregon a Washington. Usted debe tener en cuenta el hecho de que su retención de impuestos estado debe cambiar a partir de la fecha oficial de la mudanza.
Sin embargo, es poco probable que el cambio a la base de datos se hará en exactamente ese mismo día. Las dos veces necesitan ser registrados, y una mesa bitemporal pueden hacer que la grabación muy bien. El tiempo de los registros del período versionada por el sistema cuando el cambio fue notorio a la base de datos, y los registros de tiempo de aplicación del período cuando el movimiento legalmente entraron en vigor. Aquí hay un código de ejemplo para crear una tabla como:
CREAR employee_bt MESA (EmpID INTEGER, FECHA EmpStart, EmpEnd FECHA, EmpDept IntegerPERIOD PARA EmpPeriod (EmpStart, EmpEnd), Sys_Start TIMESTAMP (12) GENERADOS ALWAYSAS FILA START, Sys_End TIMESTAMP (12) GENERADOS ALWAYSAS FILA FIN, EmpName VARCHAR (30), EmpStreet VARCHAR (40), EmpCity VARCHAR (30), EmpStateProv VARCHAR (2), EmpPostalCode VARCHAR (10), el plazo de SYSTEM_TIME (Sys_Start, Sys_End), PRIMARY KEY (EmpID, EPeriod sin superposiciones), FOREIGN KEY (EDept, EPeriod PERIODO) Referencias Dept (DeptID, dperiod PERIODO)) CON SISTEMA VERSIONING-
Mesas bitemporal sirven a los propósitos de ambas tablas versionada por el sistema y tablas de tiempo de aplicación. El usuario proporciona valores para el período de inicio y fin columnas en tiempo de aplicación. Un INSERT operación en una tabla como establece automáticamente el valor del periodo de tiempo del sistema a la fecha y hora de la transacción. El valor de la columna final del periodo la hora del sistema se ajusta automáticamente al valor más alto permitido para el tipo de datos de esa columna.
ACTUALIZACIÓN y BORRAR operaciones funcionan como lo hacen para tablas estándar período de tiempo de la aplicación. Como ocurre con las tablas versionada por el sistema, ACTUALIZACIÓN y BORRAR operaciones afectan a las filas solamente actuales, y con cada operación de este tipo se inserta automáticamente una fila histórico.
Una consulta realizada sobre una mesa bitemporal puede especificar un período de tiempo de aplicación, un período versionado por el sistema, o ambos. He aquí un ejemplo de la " a la vez " caso:
Employee_bt EmpIDFROM SELECT PARA TIEMPO COMO SISTEMA OFTIMESTAMP '07/15/2013 00: 00: 00'WHERE EmpID = 314159 ANDEmpPeriod CONTIENE FECHA' 06/20/2013 00: 00: 00'-