¿Cómo trabajar con sql: 2011 mesas versionado por el sistema

Las tablas del sistema-versionado tienen un propósito diferente al de las tablas período de tiempo de aplicación en SQL, y por lo tanto funcionan de forma diferente. mesas período de tiempo de aplicación le permiten definir períodos de tiempo y operan sobre los datos que caen dentro de esos períodos. Por el contrario, las tablas versionado por el sistema están diseñados para crear un registro auditable de exactamente cuando se añadió un elemento de datos que, cambiados dentro ni borrar datos de una base de datos.

Video: Crear base de datos en Sql Server Tutorial basico

Por ejemplo, es importante para un banco para saber exactamente cuando se hizo un depósito o retiro, y esta información debe mantenerse por un período de tiempo determinado por la ley. Del mismo modo, los corredores de bolsa tienen que seguir exactamente cuando se realizó una operación de compra. Hay una serie de casos similares, en los que saber cuando ocurrió un evento en particular, a una fracción de un segundo, es importante.

Las aplicaciones como la aplicación del banco o de la aplicación del agente de bolsa tienen requisitos estrictos:

  • Cualquier actualización o operación de eliminación deben preservar el estado original de la fila antes de realizar la actualización o eliminación.

  • El sistema, en lugar del usuario, mantiene las horas de inicio y fin de los períodos de las filas.

    filas originales que han sido sometidos a una actualización o eliminación permanecen en la mesa y se denominan filas históricos. Los usuarios no pueden modificar el contenido de filas históricos o los periodos asociados a las filas. Sólo el sistema puede actualizar los períodos de filas de una tabla versionada por el sistema. Esto se hace mediante la actualización de las columnas no periodo de la tabla o como resultado de deleciones fila.

    Estas restricciones garantizan que la historia de los cambios de datos es inmune a la manipulación, por lo tanto el cumplimiento de las normas de auditoría y cumplir con las regulaciones gubernamentales.

Las tablas del sistema-versionado se distinguen de las mesas período de tiempo de aplicación por un par de diferencias en el CREAR declaraciones que los crean:

  • Mientras que en una mesa de período de tiempo de aplicación el usuario puede dar cualquier nombre para el período, en una tabla versionada por el sistema, el nombre de período debe ser HORA DEL SISTEMA.

  • los CREAR declaración debe incluir las palabras clave CON SISTEMA de versiones. Aunque SQL: 2011 permite que el tipo de datos para el inicio y el final período de tiempo para estar bien FECHA tipo o uno de los tipos de marca de tiempo, es casi siempre quieren utilizar uno de los tipos de fecha y hora. Por supuesto, cualquiera que sea el tipo que elija para la columna de inicio también debe utilizarse para la columna final.

Para ilustrar el uso de tablas versionado por el sistema, tenga en cuenta las tablas creadas para los empleados y departamentos. Se puede crear una tabla versionada sistema con el siguiente código:

CREAR TABLA (employee_sys EmpID INTEGER, Sys_Start marca de tiempo (12) GENERADOS COMO SIEMPRE FILA DE INICIO, Sys_End marca de tiempo (12) GENERADOS COMO SIEMPRE Fila final, EmpName VARCHAR (30), el plazo de SYSTEM_TIME (SysStart, SysEnd)) CON SISTEMA VERSIONING-

Video: CREAR BASE DE DATOS EN SQL SERVER

Una fila de una tabla versionada sistema es considerado como una fila sistema actual si la hora actual está contenida en el período de tiempo del sistema. De lo contrario, se considera que es una fila sistema histórico.

Las tablas del sistema-versionado son similares a las tablas período de tiempo de aplicación en muchos aspectos, pero también hay diferencias. Aquí están algunos:

  • Los usuarios no pueden asignar o cambiar los valores de las columnas y Sys_Start Sys_End. Estos valores se asignan y se cambian automáticamente por el DBMS. Esta situación es un mandato de las palabras clave GENERADOS SIEMPRE.

  • Cuando se utiliza la operación INSERT para añadir algo en una tabla versionada por el sistema, el valor de la columna Sys_Start se ajusta automáticamente a la marca de tiempo de transacción, que está asociada con cada transacción. El valor asignado a la columna Sys_End es el mayor valor de tipo de datos de esa columna.

  • En las tablas versionado por el sistema, el ACTUALIZAR y BORRAR operaciones operan sólo en las filas del sistema actual. Los usuarios no pueden actualizar o eliminar filas sistema histórico.

  • Los usuarios no pueden modificar el inicio del período de tiempo del sistema o finalizar el tiempo de cualquiera de las filas de sistema actuales o históricos.

  • Siempre que utilice o bien el ACTUALIZAR o BORRAR operación en una fila actual del sistema, una fila sistema histórico se inserta automáticamente.

    Una instrucción de actualización en una tabla versionada sistema inserta primero una copia de la fila de edad, con su hora de finalización sistema establecido a la fecha y hora de la transacción. Esto indica que la fila dejó de estar en vigor en esa marca de tiempo. A continuación, el DBMS realiza la actualización, cambiando al mismo tiempo la hora de inicio del sistema-tiempo a la fecha y hora de la transacción.

    Ahora la fila actualizada es la fila actual del sistema a partir de la fecha y hora de la transacción. ACTUALIZAR desencadenantes de las filas en cuestión se disparará, pero INSERTAR disparadores no se disparará aunque filas históricos se insertan como parte de esta operación.

UN BORRAR operación en una tabla versionada sistema no elimina las filas especificadas. En su lugar, cambia la hora del sistema del tiempo del fin período de esas filas a la fecha y hora del sistema. Esto indica que esas filas dejaron de ser actualizada a la fecha y hora de la transacción. Ahora esas filas son parte del sistema histórico en lugar del sistema actual. Al realizar una BORRAR operación, cualquier BORRAR desencadenantes de las filas afectadas se disparará.

Artículos Relacionados