0

我有一个销售订单行表(sDetail);记录上有一个索引,它实际上是一个候选索引,带有 Order 引用的键加上 STR(行号)。这用于检索特定订单的行。

sDetail 表上还有一个主索引,它是一个顺序 ID。

该命令可能会被修改。如果用户删除了订单行,我在此表中将记录标记为已删除;当我处理时,我通常使用 SET DELETED ON 运行,因此用户看不到这些已删除的记录。

但是,如果他重新创建该行,我很可能会创建一个错误“索引的唯一性被违反”,我明白这一点。为避免产生此错误,我可以看到两种可能的方法:

要么:在索引“FOR !DELETED()”上包含过滤器表达式,以便这些记录在运行时不可见

或者:当我希望测试特定行的记录是否存在时,SET DELETED OFF,测试记录的存在,并在必要时调用它。然后恢复为 SET DELETED ON。

其他开发人员是做什么的?或者,还有更好的方法?

谢谢

4

1 回答 1

1

没有一条规则是刻在石头上的。回忆是我使用的一种方式(我很少需要回忆)。我个人不喜欢 !deleted() 类型索引(如果我使用,那么我创建为位图索引)。

第三种选择是不将这样的索引设为“候选”。正如您所说,该 lineNo 的唯一目的是订购它不应该是候选索引。

于 2016-07-19T14:27:34.580 回答