¿Cómo trabajar con SQL: 2011 mesas versionada por el sistema
Tablas del sistema-versionado tienen un propósito diferente que en tiempo de aplicación las tablas de época en SQL, y por lo tanto funcionan de forma diferente. En tiempo de aplicación las tablas de época permiten definir períodos de tiempo y operan en los datos que cae dentro de esos períodos. Por el contrario, las tablas versionada 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, o borrar de la base de datos.
Por ejemplo, es importante para un banco para saber exactamente cuando se hizo un depósito o retiro, y esta información deberá conservarse durante 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 saben cuando ocurrió un evento en particular, a una fracción de segundo, es importante.
Las aplicaciones como la aplicación bancaria o la aplicación corredor 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 eliminar la operación permanecen en la mesa y se conocen como filas históricas. 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 los no-período columnas de la tabla o como resultado de deleciones de 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.
Tablas del sistema-versionado se distinguen de tiempo de aplicación las tablas de época por un par de diferencias en la CREAR declaraciones que los crean:
Mientras que en una mesa de período de tiempo de aplicación el usuario puede dar cualquier nombre a la época, en una tabla versionada por el sistema, el nombre 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 del periodo periodo sea cualquiera FECHA tipo o uno de los tipos de fecha y hora, es casi siempre quieren utilizar uno de los tipos de fecha y hora. Por supuesto, cualquiera que sea el tipo que usted elija para la columna de inicio también se deben utilizar para la columna final.
Para ilustrar el uso de tablas versionada por el sistema, tenga en cuenta las tablas creadas para los empleados y departamentos. Puede crear una tabla versionada por el sistema con el siguiente código:
CREAR employee_sys MESA (EmpID INTEGER, Sys_Start TIMESTAMP (12) GENERADOS SIEMPRE COMO FILA START, Sys_End TIMESTAMP (12) GENERADOS SIEMPRE COMO FILA FIN, EmpName VARCHAR (30), el plazo de SYSTEM_TIME (SysStart, SysEnd)) CON SISTEMA VERSIONING-
Una fila de una tabla versionada por el sistema es considerado como una fila actual del sistema si la hora actual está contenida en el periodo de tiempo del sistema. De lo contrario, se considera que es una fila sistema histórico.
Tablas del sistema-versionados son similares a tiempo la aplicación tablas de época en muchos aspectos, pero también hay diferencias. Aquí están algunos:
Los usuarios no pueden asignar o cambiar los valores en las columnas Sys_Start y 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 en la fecha y hora de transacciones, que se asocia con cada transacción. El valor asignado a la columna de la Sys_End es el mayor valor de tipo de datos de esa columna.
En las tablas versionada por el sistema, el ACTUALIZACIÓN y BORRAR operaciones operan sólo en las filas del sistema actual. Los usuarios no pueden actualizar o eliminar filas de sistemas históricos.
Los usuarios no pueden modificar el período de tiempo del sistema de inicio o fin de cualquiera de las filas actuales o históricos del sistema.
Siempre que utilice o bien el ACTUALIZACIÓN 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 por el sistema primero inserta una copia de la fila de edad, con su hora de finalización del sistema establecido en la fecha y hora de la transacción. Esto indica que la fila dejó de estar vigente en ese sello de tiempo. A continuación, el DBMS realiza la actualización, cambiando simultáneamente 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. ACTUALIZACIÓN disparadores para las filas en cuestión se disparará, pero INSERT desencadenantes no se disparará aunque filas históricos se insertan como parte de esta operación.
LA BORRAR operación en una tabla versionada por el sistema no elimina las filas especificadas. En su lugar, cambia la hora del sistema del tiempo del fin del período de las filas a la fecha y hora del sistema. Esto indica que las filas dejaron de ser la vigente en 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 disparadores para las filas afectadas se disparará.