SQL Server 2008 - 将另一列的默认值绑定(bind)到主键

标签 sql sql-server

我想知道如何在 SQL Server 2008 中最好地实现以下用于行版本控制的简单策略。我的想法是将 primary_key 字段复制到另一列(在本例中为 originationg_id)以便将多个版本组合在一起/同一对象的修订版。

当我插入初始“version1”行时,我想将 originating_id 列默认为 primary_key 的列。这是由数据库自动生成的,所以我不确定如何去做。后续插入将已经知道为此字段提供的值。

例子:

primary_key, originating_id, date_created, some_value
---------------------------------------------------------------------
1            1               13/12/2010    version1 of object A...
2            1               14/12/2010    version2 of object A...
3            1               15/12/2010    version3 of object A...
4            4               15/12/2010    version1 of object B...

谢谢。

最佳答案

在我看来,这是一个与实际数据一起存储的表格,您可以根据控制审计的方式使用它做一些事情。

  1. 您可以在插入表后使用 SELECT SCOPE_IDENTITY() 获取标识值,然后使用该值插入到报告表中
  2. 您可以在“插入后”使用触发器,然后您就可以访问主键。

如果您出于某种奇怪的原因在同一个表内执行此操作,我建议您可能会考虑使用不同的策略,因为很难查询此长期术语的“最新”版本。

关于SQL Server 2008 - 将另一列的默认值绑定(bind)到主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429495/

相关文章:

c# - 如何使用C#在同一列中计算相同元素或特定条件?

java - 如何在 JPA 中设置默认架构

SQL Server 2008查询编辑器改变查询逻辑

java - 如何计算表 "A"中列中每个值的出现频率并使用 Android 应用程序中的 SQLite 插入表 "B"

MySQL 在一个查询中将多个表中的值插入到一个表中?

sql - 基于Order By SQL消除重复

sql - 如何正确创建索引

sql - 将 XML 导入 SQL Server,分成多行

sql - 如何在 SQL Server 中将 wgs 84 转换为纬度/经度

sql - 通过选择查询在表中插入行