The new version of MS SQL server offers a lot of new cool features. One of them is called system-versioned temporal tables.
As the name suggests, this feature enables versioning for data in table, it does quite simply by creating a second table that holds the historic state of each row, as well as information about the timespan in which the row was valid.