首页 > 解决方案 > SQL 直接引用数据

问题描述

Microsoft SQL 中有没有一种方法可以根据表、列和记录来引用特定的数据项?

例如,表 A (COL1 INT, COL2 INT) 有 2 条记录 (1,2) 和 (3,4)。我可以通过引用以某种方式捕获值 4,而不是“4”吗?

目的是允许我创建一个审计方法,该方法可以指向(表、列、记录)中的特定值,而不必在我的审计表中复制该值(这可能很大,因此会增加我的数据库大小)。

我在想……就像 Object_Id 标识一个特定的 SQL 对象一样,这个引用(也许是某种 GUID?)也会标识一个特定的数据。

提前谢谢了。

标签: sqlsql-server

解决方案


答案是否定的。在 MS SQL 中(据我所知,在其他流行的数据库中)没有对特定值的此类引用。此外,即使 MS SQL 中的表行也没有嵌入唯一标识符,除非您注意创建 IDENTITY 列。

您可以自己实现此类引用。例如,创建一个包含列的表

data_id,
table_name,
row_id,
column_name

并在每次需要参考时填写。然后你可以通过data_id引用一条数据。

但这不是一个好的解决方案。

  • 在大多数情况下,此表中的单个条目将比引用的数据值本身消耗更多空间
  • 要获取值,您仍然必须使用动态 sql
  • 这仅适用于具有 IDENTITY 列并且所有表具有相同名称的表
  • 等等

推荐阅读