SQL Server表中的列:ID(PK,自动递增),ORDERNUMBER,Col1中,col2的 ..SQL Server自定义排序记录表,允许删除记录与自定义排序
默认情况下,插入触发器将建议的here中的值从ID复制到OrderNumber。 使用一些可视化界面,用户可以通过递增或递减OrderNumber值来对记录进行排序。
然而,如何处理被记录在此期间删除?
示例: 假设您添加具有PK ID的记录:1,2,3,4,5 - OrderNumber接收相同的值。然后删除ID = 4,ID = 5的记录。下一条记录将具有ID = 6,并且OrderNumber将收到相同的值。 跨度为2的OrderNumbers将强制用户减少ID = 6的记录,如3次,以更改其订单(即按下3x按钮)。
另一种方法是,可以将select count(*) from table
插入到OrderNumber中,但是当删除一些旧行时,它允许在表中有几个相似的值。
如果不删除记录,但只有“取消”他们,他们仍然包含在排序顺序,只为用户不可见的。目前,需要Java解决方案,但我认为问题是语言无关的。
是否有这个更好的办法?
我意识到这可能听起来毫不相关,但您现在执行的订单改变如何?你在谈论多次递减'OrderNumber'值的必要性,而不是一次。但是,如果您只需要将其减少一次,那将如何工作?当然,你还需要在另一行增加* OrderNumber(可能是'OrderNumber = 5'的那个),对吗?那是你怎么做的?如果是这样,*你在SQL中还是在应用程序中执行此操作?如果在SQL中,你能显示脚本吗? –
@AndriyM在检查(在java servlet中)如果该行不是第一个或最后一个,我正在运行两个SQL UPDATE查询来切换这2个元素的OrderNumber。所以,现在,这只是一个元素的转变。我猜如果我要将元素移动几个地方,我需要在起点和终点之间更新所有的OrderNumbers。 – yosh