私が取り組んでいた最近のプロジェクトの要件の 1 つは、監査証跡の一部としてデータベース テーブル データの履歴を維持することでした。技術的な解決策について最初に考えたのは、トリガーを使用することでしたが、いくつかの調査の後、SQL Server テンポラル テーブル (コア SQL Server 2016 の一部) について学びました。私はこれについて多くの調査を行い、テンポラル テーブルを有効に活用できることを確認しました。
テンポラル テーブルの詳細: SQL Server 2016 でのテンポラル テーブル履歴の管理
ただし、いくつかの列が変更された場合にのみテンポラル テーブルのデータが作成されるようにしたいと考えています。
CREATE TABLE dbo.Persons
(
ID BIGINT IDENTITY(1,1) NOT NULL,
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50),
PhoneNumber NVARCHAR(20)
)
この上にテンポラル テーブルを作成すると (SYSTEM_VERSIONING = On)、名前と姓ではなく、電話番号が変更された場合にのみテンポラル テーブルにデータが挿入されます。