【发布时间】:2018-03-20 23:18:40
【问题描述】:
我正在开发 Windows 窗体应用程序,它访问 SQL Server 2014 中的数据库。我有 EmployeeTable 从中检索数据,并在 DataGridView 中显示所有记录。在这个表中,我有一列SequenceID,它基本上从1 递增到该表中的记录数,但这与AUTO INCREMENT 不同,因为每次修改表时都会更新SequenceID ,并且无论插入多少新记录或删除一些记录,都保持数字顺序。例如,如果数据看起来像
SequenceID | Name
1 | John
2 | Mary
3 | Robert
并且Mary 被删除,那么结果表需要看起来像
SequenceID | Name
1 | John
2 | Robert
为了实现这一点,我使用了来自Update SQL with consecutive numbering 的zombat 的最佳答案,在我使用ORDER BY 表达式之前效果很好。
这个EmployeeTable 也有DateAdded 列,包含插入记录的日期。我需要显示按此DateAdded 列排序的所有记录,最旧的记录显示在顶部,最新的记录显示在底部除了正确的SequenceID 顺序。但是,当删除记录并插入新记录时,它会变得混乱。
如果我插入 3 条记录,例如,
SequenceID | Name | DateAdded
1 | John | 9/25/2017
2 | Mary | 9/26/2017
3 | Robert | 9/27/2017
并删除Mary,它变成了
SequenceID | Name | DateAdded
1 | John | 9/25/2017
2 | Robert | 9/27/2017
到目前为止,这还不错。但是,如果我在 9/28/2017 上添加另一条记录 Tommy,因为它是最新的,所以应该添加到底部,它会产生类似的结果,
SequenceID | Name | DateAdded
1 | John | 9/25/2017
3 | Robert | 9/27/2017
2 | Tommy | 9/28/2017
ORDER BY 工作正常,但它弄乱了SequenceID,我不知道为什么会这样。我所做的只是,
SELECT *
FROM EmployeeTable
ORDER BY DateAdded
我尝试在此 SQL 命令之前和之后放置zombat 的 SQL 命令,但均未成功。在我看来,当我删除一行时,该行有一个不可见的点,并且在那里插入了一条新记录。
有什么办法可以解决这个问题,以便我可以通过DateAdded 订购记录并且仍然有SequenceID 工作正常?
【问题讨论】:
-
当您通过
DateAdded订购时,您订购的是DateAdded而不是SequenceId -
我知道。我想要做的是,通过
DateAdded订购它们,然后更新SequenceID。我正在尝试更新SequenceID,但它没有得到更新..
标签: sql-server datagridview sequence