【问题标题】:How to track position of columns on a DB table如何跟踪数据库表中列的位置
【发布时间】:2013-04-30 13:09:19
【问题描述】:

好吧,这个解释有点奇怪,我会尽力的。

我有一个名为 versionsDB 表 (SQL),其中包含不同 操作 的列表,它们是版本

例如,1.0 版:

1. Insert XX

2. Delete YY

3. Insert XY

在我的代码中,有时需要更新特定版本的操作。因此,例如,假设我需要一个新的Insert YX位置 2。

1. Insert XX

2. Insert YX

3. Delete YY

4. Insert XY

(这仍然是 1.0 版)。

如您所见,每次我更新版本时,一些操作的位置都会改变,因此初始跟踪丢失。经过多次更新,这些操作几乎不可能在最初的相同位置。

所以,这是我的问题。我需要单独跟踪这些列:

我无法进行任何查询来查找“插入 XX”所在的位置,因为在我的表中可能有多个Insert XX

我的问题是,是否有任何解决方案可以跟踪 SQL 表中的位置变化?

我使用 PostgreSQL,Java 作为编程语言,ORMLite 作为映射器。

提前致谢。

【问题讨论】:

    标签: java sql database postgresql orm


    【解决方案1】:

    您可以为行使用唯一的 id 字段,为订单使用序列字段

      id seq val
      1  1   Insert XX  
      2  2   Delete YY
      3  3   Insert XY
    

    当您在 pos 2 添加新项目时(它获取下一个 id(4),并且您执行更新 where seq >=2 以设置 seq=sql+1)

      id seq val
      1  1   Insert XX  
      4  2   Insert YX
      2  3   Delete YY
      3  4   Insert XY
    

    【讨论】:

      【解决方案2】:

      在数据库中您永远无法确定的一件事是行的顺序。例如,如果你这样做:

      insert *A* into myTable ...
      insert *B* into myTable ...
      

      然后做一个

      select * from myTable  
      

      你可能会得到

      A
      B
      

      B
      A
      

      两者同样有效。在您的情况下,您可能希望添加一个具有对结果排序的特定目的的列。我通常使用整数并将其称为 displayOrder。所以我的选择语句通常看起来像:

      select * from myTable order by displayOrder

      此功能的一种用途是在您可以从多家公司中进行选择的表单上。我想要在顶部的那个按字母顺序在中间,所以我可以按 companyName 进行订购。相反,我使用 displayOrder 列。

      希望对您有所帮助。

      【讨论】:

      • 感谢您的回复。我会接受伊恩的第一个。 +1
      【解决方案3】:

      另一个列出版本号、指令号和序列号的表格怎么样?它变得越来越复杂,但这也将允许您重新创建所需的任何版本。另外,您不必一直重写主表中的序列号。

      Table Versions
           VersionID int,
           InstructionNum int,
           SeqNum int
      

      其中 VersionID 是某个版本标识符(也可以是字符串)。 InstructionNum 指向一个指令列表(你已经有了),序列号告诉执行它们的顺序。

      这样,您还可以获得特定版本的说明,而不是所有版本。

      【讨论】:

      • 感谢您,但在我的要求中,我不想向数据库添加另一个表。 +1
      猜你喜欢
      • 1970-01-01
      • 2016-03-09
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多