Creación y uso de tablas de solo adición del libro de contabilidad
Se aplica a: SQL Server 2022 (16.x) Azure SQL Database Azure SQL Managed Instance
En este artículo se muestra cómo crear una tabla de libro de contabilidad de solo anexión. Luego, insertará valores en la tabla de libro de contabilidad de solo anexión e intentará realizar actualizaciones de los datos. Por último, verá los resultados mediante la vista de libro de contabilidad. Se usará un ejemplo de un sistema de acceso con clave de tarjeta de una instalación, que es un modelo de sistema de solo anexión. Este ejemplo le proporcionará una visión práctica de la relación entre la tabla de libro de contabilidad de solo anexión y su vista de libro de contabilidad correspondiente.
Para más información, consulte Tablas de libro de contabilidad de solo anexión.
Requisitos previos
Creación de tablas de libro de contabilidad de solo anexión
Crearemos una tabla KeyCardEvents
con el esquema siguiente.
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
EmployeeID (Id. de empleado) | int | Identificador único del empleado que accede al edificio. |
AccessOperationDescription | nvarchar (MAX) | Operación de acceso del empleado. |
Marca de tiempo | datetime2 | Fecha y hora en que el empleado ha accedido al edificio. |
Use SQL Server Management Studio o Azure Data Studio para crear un esquema y una tabla denominados
[AccessControl].[KeyCardEvents]
.CREATE SCHEMA [AccessControl]; GO CREATE TABLE [AccessControl].[KeyCardEvents] ( [EmployeeID] INT NOT NULL, [AccessOperationDescription] NVARCHAR (1024) NOT NULL, [Timestamp] Datetime2 NOT NULL ) WITH (LEDGER = ON (APPEND_ONLY = ON));
Agregue un nuevo evento de acceso al edificio en la tabla
[AccessControl].[KeyCardEvents]
con los valores siguientes.INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
Vea el contenido de la tabla KeyCardEvents y especifique las columnas GENERATED ALWAYS que se agregan a la tabla de libro de contabilidad de solo anexión.
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];
Examine el contenido de la vista de libro de contabilidad keyCardEvents junto con la vista del sistema de transacciones del libro de contabilidad para identificar quién agregó registros a la tabla.
SELECT t.[commit_time] AS [CommitTime] , t.[principal_name] AS [UserName] , l.[EmployeeID] , l.[AccessOperationDescription] , l.[Timestamp] , l.[ledger_operation_type_desc] AS Operation FROM [AccessControl].[KeyCardEvents_Ledger] l JOIN sys.database_ledger_transactions t ON t.transaction_id = l.ledger_transaction_id ORDER BY t.commit_time DESC;
Intente actualizar la tabla
KeyCardEvents
cambiandoEmployeeID
de43869
a34184.
.UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
Recibirá un mensaje de error que indica que no están permitidas las actualizaciones para la tabla de libro de contabilidad de solo anexión.
Permisos
Para crear tablas de libro de contabilidad de solo anexión se necesita el permiso ENABLE LEDGER
. Para más información sobre los permisos relacionados con las tablas de libro de contabilidad, consulte Permisos.