T-SQL temporal tabellen

Geschreven door: op zaterdag 30 maart 2019

Leestijd: 3 minuten

Een temporal tabel, ook wel bekend als system-versioned temporal table, is een tabel die logs bijhoudt van veranderingen in de data van een gekoppelde, andere tabel. Dit zorgt ervoor dat je logs opbouwt over data uit een tabel die voor een bepaalde tijdperiode valide was. De naam system-versioned komt voort uit het feit dat in deze tabel de validiteit van de data met een tijdsperiode wordt aangegeven. De system-versioned table bevat 2 kolommen die de tijdsperiode aangeven: de startdatum vanaf wanneer de data valide was en de einddatum, wanneer de data niet meer valide was en is gewijzigd of verwijderd. De temporal tabel heeft namelijk 2 kolommen die bijhouden van welke tot welke periode de data valide was.

Een temporal tabel kan nuttig zijn wanneer:

  1. Het bijhouden van wijzigingen in de data nodig is voor bijv. audits.
  2. Bijhouden van trends door de tijd heen
  3. Een back-up bijhouden als er per ongeluk wijzigingen in de data plaatsvinden die verkeerd zjin.

Hoe werkt het?

De temporal tabel, laten we deze voor nu log tabel noemen, is gekoppeld aan een andere tabel, deze noemen we de huidige tabel. Bij een insert in de huidige tabel wordt de start dateTime gezet voor deze specifieke data in de log tabel. Dit is het beginpunt vanaf waar deze data geldig is. Als er in de huidige tabel een update of delete wordt uitgevoerd, zal de data die gewijzigd of verwijderd word, opgeslagen worden in de log tabel. In de log tabel krijgt deze data dan een tijdsperiode mee, vanaf de tijd dat deze data valide was tot de tijd van de update of delete. Met een merge doet de log tabel eigenlijk hetzelfde als met een update of een delete, afhankelijk van de uitkomst van de merge.

Hieronder een voorbeeld van hoe je een temporal tabel kunt aanmaken voor een tabel:

Temporal table create.png

Als je geen history tabel naam opgeeft zal SQL er zelf een maken met de volgende naamgeving:
dbo.MSSQL_TemporalHistoryFor_X, waar X de primary key is van de huidige tabel.

 

Je kunt ook SYSTEM_VERSIONING aanzetten op een bestaande tabel. Dat doe je door in de bestaande tabel 2 kolommen toe te voegen:

temporal table alter existing.png

En daarna de SYSTEM_VERSIONED aan te zetten:

ALTER TABLE dbo.shippingOrders
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.shippingOrdersHistory));

De volgende query is een voorbeeld van hoe je data kunt opvragen vanuit een temporal tabel:

temporal table query.png

Bovenstaande query zoekt rijen in dbo.ShippingOrders log tabel waar de shippingOrderId 1000 is, shipped op true staat en de data valide is geweest in het afgelopen jaar.

Voor meer informatie over hoe je queries kun uitvoeren op een temportal tabel, lees het volgende artikel: queries uitvoeren op een System_Versioned table.

Limitaties

Een temportal tabel heeft ook een aantal limitaties:

  1. Je kunt er geen primary key aangeven.
  2. Je kunt geen constraints opgeven
  3. INSERT en UPDATE statements zijn niet toegestaan binnen een temporal tabel
  4. TRUNCATE TABLE werkt niet op een tabel met SYSTEM_VERSIONED = ON
  5. File tabellen zijn niet toegestaan

Zie hier voor de gehele lijst aan limitaties.


Andere blogartikelen

  • Overeenkomsten tussen Growth Hacking en UX design

    Geschreven door: op zondag 13 september 2020

    Laten we beginnen met wat Growth hacking is, Growth hacking zijn experimenten voor oplossingen die groeiproblemen moeten oplossen. Dit is een nieuwe marketing aanpak die met name wordt gedreven door d ...

    Bekijk het artikel »
  • B2B SEO en Geoptimaliseerde Afbeeldingen

    Geschreven door: op woensdag 12 augustus 2020

    In een tijd waarin 27% van het koopproces van B2B kopers met eigen online research wordt doorgebracht is het essentieel om een goed vindbare website te hebben. Afbeeldingen kunnen, indien geoptimalise ...

    Bekijk het artikel »
  • Prospects zoeken B2B

    Geschreven door: op woensdag 12 augustus 2020

    Het zoeken van B2B prospects is een uitdaging voor elk bedrijf. Met name kwalitatieve B2B prospects.Door vooraf onderzoek te doen naar bedrijven die voldoen aan je criteria en je marketing hierop aan ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Allrig is de alles in een leverancier binnen de energie-industrie
AOC is een toonaangevend wereldwijd bedrijf actief in de verkoop van kwaliteitsharsen
ERIKS is een toonaangevende en innovatieve leverancier aan de procesindustrie en aan machinebouwers, die zowel de rol van specialist als die van brede MRO-leverancier vervult
Industrieel dienstverlener Heinen & Hopman Engineering uit Bunschoten is dé wereldwijde specialist op het gebied van klimaatbeheersing
Handicare is een internationale organisatie die ouderen helpt om hun dagelijks leven gemakkelijker te maken door het produceren van hoogwaardige trapliften
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten