2

私が取り組んでいた最近のプロジェクトの要件の 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)、名前と姓ではなく、電話番号が変更された場合にのみテンポラル テーブルにデータが挿入されます。

4

2 に答える 2

0

履歴が必要な属性用に 1 つのテーブルを作成し (そして を設定しますsystem_versioning = ON)、履歴が不要な属性用に 2 つ目のテーブルを作成できます。2 つのテーブル間には 1 対 1 の関係があります。

于 2021-04-26T07:40:07.067 に答える