Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2022 (16.x) e versões
posteriores Azure SQL Database
Azure SQL Managed Instance
Este artigo mostra como criar uma tabela contábil somente acréscimo. Em seguida, você irá inserir valores na sua tabela de registo apenas acréscimo e depois tentar atualizar os dados. Finalmente, você visualizará os resultados usando a visualização contábil. Usaremos um exemplo de um sistema de acesso por cartão para uma instalação, que é um padrão de sistema apenas aditivo. Nosso exemplo lhe dará uma visão prática da relação entre a tabela contábil somente de acréscimo e sua visualização contábil correspondente.
Para obter mais informações, consulte Tabelas contábeis somente de acréscimo.
Pré-requisitos
Criar uma tabela contábil somente acréscimo
Criaremos uma KeyCardEvents tabela com o esquema a seguir.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| ID do funcionário | int | O ID único do funcionário que acede ao edifício |
| DescriçãoDeOperaçãoDeAcesso | nvarchar (MÁX) | A operação de acesso do colaborador |
| Data e Hora | datetime2 | A data e a hora em que o funcionário acedeu ao edifício |
Use o SQL Server Management Studio para criar um novo esquema e uma nova tabela chamados
[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));Adicione um novo evento de acesso ao edifício na
[AccessControl].[KeyCardEvents]tabela com os seguintes valores.INSERT INTO [AccessControl].[KeyCardEvents] VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');Exiba o conteúdo da tabela KeyCardEvents e especifique as colunas GENERATED ALWAYS que são adicionadas à sua tabela contábil somente de acréscimo.
SELECT * ,[ledger_start_transaction_id] ,[ledger_start_sequence_number] FROM [AccessControl].[KeyCardEvents];Exiba o conteúdo da visualização do livro-razão KeyCardEvents juntamente com a visualização do sistema de transações contábeis para identificar quem adicionou registros à tabela.
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;Tente atualizar a
KeyCardEventstabela alterando oEmployeeIDde43869para34184.UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;Você receberá uma mensagem de erro informando que as atualizações não são permitidas para sua tabela contábil somente para acréscimos.
Permissions
A criação de tabelas contábeis somente de acréscimo requer a ENABLE LEDGER permissão. Para obter mais informações sobre permissões relacionadas a tabelas contábeis, consulte Permissões.