Sdílet prostřednictvím


Vytvářejte a používejte tabulky účetní knihy pouze pro přírůstky

Platí pro: SQL Server 2022 (16.x) a novější verze Azure SQL DatabaseAzure SQL Managed Instance

V tomto článku se dozvíte, jak vytvořit tabulku registru jen pro připojení. V dalším kroku vložíte hodnoty do tabulky pouze pro zápis a pak se pokusíte aktualizovat data. Nakonec výsledky zobrazíte pomocí zobrazení hlavní knihy. Pro zařízení použijeme příklad přístupového systému s klíčovou kartou, což je vzor systému pouze pro přidávání. Náš příklad vám poskytne praktický pohled na relaci mezi tabulkou registru jen pro připojení a odpovídajícím zobrazením registru.

Další informace naleznete v tématu Tabulky účetní knihy pouze pro přidávání.

Požadavky

Vytvořte tabulku jen pro přidávání do účetní knihy

Vytvoříme KeyCardEvents tabulku s následujícím schématem.

Název sloupce Datový typ Description
Identifikátor zaměstnance int Jedinečné ID zaměstnance přistupujícího k budově
PopisOperacePřístupu nvarchar (MAX) Přístupová operace zaměstnance
Časová značka datetime2 Datum a čas, kdy zaměstnanec přistupoval k budově
  1. Pomocí aplikace SQL Server Management Studio vytvořte nové schéma a tabulku s názvem [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));
    
  2. Do tabulky přidejte novou událost [AccessControl].[KeyCardEvents] přístupu k budově s následujícími hodnotami.

    INSERT INTO [AccessControl].[KeyCardEvents]
    VALUES ('43869', 'Building42', '2020-05-02T19:58:47.1234567');
    
  3. Zobrazte obsah tabulky KeyCardEvents a zadejte sloupce GENERATED ALWAYS , které se přidají do tabulky registru jen pro připojení.

    SELECT *
         ,[ledger_start_transaction_id]
         ,[ledger_start_sequence_number]
    FROM [AccessControl].[KeyCardEvents];
    
  4. Zobrazte obsah zobrazení registru KeyCardEvents spolu se systémovým zobrazením transakcí registru a určete, kdo do tabulky přidal záznamy.

     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;
    
  5. Pokuste se aktualizovat tabulku KeyCardEvents změnou EmployeeID z 43869 na 34184..

    UPDATE [AccessControl].[KeyCardEvents] SET [EmployeeID] = 34184;
    

    Zobrazí se chybová zpráva s informacemi, že aktualizace nejsou povolené pro tabulku registru jen pro připojení.

    Snímek obrazovky s chybovou zprávou pouze pro přidávání

Povolení

Vytváření tabulek účetního záznamu pouze pro přidávání vyžaduje oprávnění ENABLE LEDGER. Další informace o oprávněních souvisejících s tabulkami registru najdete v tématu Oprávnění.