gpt4 book ai didi

sql - 如何跟踪表中数据的变化?

转载 作者:行者123 更新时间:2023-12-03 00:00:05 24 4
gpt4 key购买 nike

我有一个简单的问题。如何跟踪 SQL Server 表中行的更改?这是我想要的示例。

表格:用户

:名称|地址 |用户名 |用户类型

第 1 行:克里斯托弗 | 123假街|情人1234 | 1

我如何跟踪用户将“Christopher”更改为“Robert”的时间,或者他们是否将“123 Fake Street”更改为“124 Fake Street”。我需要知道更改的时间以及更改的旧值。我还希望能够跟踪 UserType 是否更改(这是外键),因此我需要知道如何跟踪外键更改。

这可能发生在多个不同的表中,我想跟踪多个不同的表。

最佳答案

有不同的选项可以做到这一点。我提两点:

选项 1:

将名为 IsHistory 的列添加到表中。你最终会得到这样的结果:

Name        | Address         | Username  | UserType | IsHistory
------------+-----------------+-----------+----------+----------
Christopher | 123 Fake Street | Lover1234 | 1 | 0

然后,当您更新记录时,将旧记录上的 IsHistory 值更改为 1,然后添加包含更新信息的新记录,并将 IsHistory 记录更改为 0。您最终会得到如下结果:

Name        | Address         | Username  | UserType | IsHistory
------------+-----------------+-----------+----------+----------
Christopher | 123 Fake Street | Lover1234 | 1 | 1
Robert | 123 Fake Street | Lover1234 | 1 | 0

选项 2:

添加一个日志表,其中可以包含以下内容:

LogID | Entity | ActionType | Description | OldDataXML

然后,每次发生更新时,都在此处插入一条记录。

  • LogID 是 PK
  • 实体是受更新影响的表
  • 操作类型是对实体执行的操作(插入、更新、删除)
  • 说明是解释更改的简短文字
  • OldDataXML 是 XML 更改之前记录中的数据。

例如:

<User Name="Christopher" 
Address="123 Fake Street"
Username="Lover1234"
UserType="1">
</User>

在此选项中,用户表中的记录将始终是最新的,并且在日志表中您将看到更改的信息。

希望这可以帮助你。

关于sql - 如何跟踪表中数据的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com