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

2024-02-08

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

Table: Users

Columns: 姓名 |地址 |用户名 |用户类型

Row 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>

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

希望这可以帮到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跟踪表中数据的变化? 的相关文章

  • 在 SQL Server 中将 UTC 毫秒转换为 DATETIME

    我想在 SQL Server 中将 UTC 毫秒转换为 DateTime 这可以通过以下代码在 C 中轻松完成 DateTime startDate new DateTime 1970 1 1 AddMilliseconds 1348203
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 与 SQL 中的 IN 运算符相反

    我怎么能做相反的事情 换句话说 选择所有姓氏不是 Hansen 或 Pettersen 的人 WHERE lastname NOT IN Hansen Pettersen 请参阅 IN 和 NOT IN 运算符 部分SQLite 所理解的
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • SQL 查询将文本数据存储在 Varbinary(max) 中

    有没有办法让 varbinary 在 SQL Server 中接受文本数据 这是我的情况 我有相当大量的 XML 我计划以 压缩 格式存储它们 这意味着 Varbinary 但是 当我进行调试时 我希望能够翻转配置开关并以纯文本形式存储 以
  • 如何将事物的组合映射到关系数据库?

    我有一个表 其记录代表某些对象 为了简单起见 我假设该表只有一列 这是唯一的ObjectId 现在我需要一种方法来存储该表中的对象组合 组合必须是唯一的 但可以是任意长度 例如 如果我有ObjectIds 1 2 3 4 我想存储以下组合
  • 当我使用可变参数而不是常量参数时,为什么我的内联表 UDF 慢得多?

    我有一个表值内联 UDF 我想过滤该 UDF 的结果以获得一个特定值 当我使用常量参数指定过滤器时 一切都很好 并且性能几乎是瞬时的 当我使用可变参数指定过滤器时 它会花费明显更大的时间块 大约是逻辑读取的 500 倍和持续时间的 20 倍
  • Spring Batch 死锁 - 无法增加身份;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException

    我们正在将 Spring Batch 应用程序从 Oracle DB 迁移到 Azure SQL Server 我在尝试执行时收到以下错误两个不同的工作同时更新不同的表 但使用相同的公共 BATCH 表 引起原因 org springfra
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • ASP SQL Server 连接

  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 有没有办法设置 SQL Server 作业计划每 30 秒运行一次?

    当我尝试创建计划时 我可以选择的最短时间是 1 分钟 有没有办法将其减少到秒 这篇文章在这里SQL Server 作业调度 http www sqlservercentral com articles Administration sqls
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • hive sql查找最新记录

    该表是 create table test id string name string age string modified string 像这样的数据 id name age modifed 1 a 10 2011 11 11 11 1
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER

随机推荐

  • java正则表达式模式分割逗号

    String line a 1 b 1 2 c d 1 e 1 11 String tokens line split for String t tokens System out println gt t System out print
  • 异常日志文件的最佳位置 (Windows)

    异常日志应该放在哪里的问题已经在这里讨论过一两次 或多次 其中一个建议是应用程序永远不应该写入安装文件夹 但是 如果我将日志放在 appdata 中的某个位置 这意味着每个用户都有自己的一组日志 我更喜欢将所有日志放在一个位置 在最新的 M
  • 循环进口地狱

    Python 是一种极其优雅的语言 好吧 除了 除了进口 我仍然无法让它按照我认为自然的方式工作 我有课MyObjectA这是在文件中mypackage myobjecta py 该对象使用一些实用函数 这些函数位于mypackage ut
  • 停止将 typescript-eslint/explicit-module-boundary-types 应用于不使用 Typescript 的 vue 组件

    我在用着vue我刚刚更新了 typescript eslint eslint plugin 3 10 1 我的项目包含几个组件 其中一些正在使用javascript和别的typescript Warning 我对里面的方法有这个警告non
  • 在 SQL LIKE 语句中使用变量

    我有一个存储过程 MSSQL 2k5 它将为 LIKE 子句接受一个变量 如下所示 DECLARE SearchLetter2 char 1 SET SearchLetter t SET SearchLetter2 SearchLetter
  • 为什么glBufferSubData需要等到VBO不被glDrawElements使用?

    在 OpenGL Insights 中 它说 OpenGL 驱动程序必须等待 因为使用了 VBO 由上一帧的 glDrawElements 绘制 这让我很困惑 据我所知 glBufferSubData会将数据复制到临时内存 然后再传输到GP
  • 使用 Box Windows SDK v2 库对 C# 桌面应用程序中的 Box 进行身份验证

    看起来这应该是一件简单的事情 但我找不到示例或足够详尽的文档来弄清楚 我有一个 C 桌面应用程序 我想通过 Box API 与 Box 集成 我认为使用 Box Windows SDK v2 for NET 将是最佳选择 有人能给我指一个适
  • Php:检查电子邮件内容是否为垃圾邮件

    我正在创建一个新闻通讯功能 允许用户发送电子邮件 由于存在恶意人员想要发送垃圾邮件 因此我希望能够检查并查看创建的邮件是否是垃圾邮件 我已经研究了几种不同的方法 例如尝试垃圾邮件杀手 但您需要完整的电子邮件 而我稍后才会得到 或者您需要安装
  • 即使文件不存在,为什么 SELECT INTO OUTFILE 也会给出文件存在错误?

    该文件肯定不存在 但我还是收到错误 I do rm tmp records materialized view txt mysql gt SELECT FROM records materialized view INTO OUTFILE
  • AngularJS:如何获取模板的 $location.path

    我需要模板中 url 的当前路径 location path 的内容 但不是通过控制器 因为我有很多控制器 并且我不想重复声明 scope currentUrl location path 感谢您的建议 AngularJS 模板只能看到范围
  • 用于未定方程组的 C++ 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找一个 C 库来解决这样的不确定系统 q 是向量 w x y z 变量和 a b c d 常
  • 使用 RxJs groupBy 以对象作为键

    我正在尝试使用groupBy使用 RxJ 我需要使用对象作为键 如果我不这样做 我会使用例如这样的简单字符串 var types stream groupBy function e return e x x is a string 然后一切
  • php可以检测javascript是否打开吗?

    我有动态创建的页面 现在我想添加ajax功能 所以我想添加if语句来更改输出 if js is on echo js is on else echo js is off 有什么办法可以检测js是否与php一起打开吗 或者有什么方法可以通过
  • 使用运行时构造函数参数的 InheritanceBasedAopConfigurer

    我有一个由 Spring NET 上下文拥有的 原型 类 它是使用带有运行时构造函数参数的 AutoProxy 创建的 它像这样被实例化 var context ContextRegistry GetContext var myClass
  • 画布清弧

    如何覆盖 HTML5 画布弧 我认为这段代码可以工作 但它在它周围留下了一个边框 尽管事实上它的值完全相同 只是颜色不同 我是否缺少边框属性
  • 我可以重写整个 git 存储库的历史记录以包含我们忘记的内容吗?

    我们最近完成了从 Mercurial 到 Git 的转换 一切都很顺利 我们甚至能够获得使存储库中的所有内容看起来 工作相对正确所需的转换 我们添加了一个 gitignore并开始了 然而 一旦我们合并 使用任何旧的功能分支 我们就会遇到一
  • 给定节点名称,获取另一个节点的子节点

    我有一个像这样的 XML
  • Nuxt async fetch() 创建多个实例?重复调用 fetch()

    我有一个简单的BasePreviewImage需要从内部 API 异步获取 Array Buffer 的组件 然而 看来async fetch 尽管组件本身被破坏 但每个创建的实例都会被调用 Example
  • Django 应用程序中的版本号

    我正在开发一个 Django 应用程序 我想显示应用程序的版本 以便发现错误的人知道应用程序的版本并可以提供更好的错误报告 是否有一种普遍接受的方法来在 Django 中存储版本号 我的意思是我的应用程序的版本 而不是 Django 我一直
  • 如何跟踪表中数据的变化?

    我有一个简单的问题 如何跟踪 SQL Server 表中行的更改 这是我想要的一个例子 Table Users Columns 姓名 地址 用户名 用户类型 Row 1 克里斯托弗 123假街 情人1234 1 我如何跟踪用户将 Chris