向表单添加新数据时,我的主键序列增加1。 但是,如果我要删除数据并将其替换为新数据,则序列将继续执行。
因此,例如我的数据主键是1,2,3,4,5,6,10,因为先前删除了行。
我希望这样做。
答案 0 :(得分:2)
var notification = new Notification();
notification.ShowInTaskbar = false;
notification.Show();
值保证唯一,但您不能指望这些值形成连续的序列而没有任何间隙。
即使您永远不会从表中删除任何行,您也可能会在某些时候看到间隙,因为序列值在不同事务之间被缓存(预先保留)。
答案 1 :(得分:0)
这是一个数字的序列,它不关心你是否使用了“当前值”
与MySQL相反,在Oracle中,Sequence不依赖于列,但它是一个单独的对象,您可以从(通过your_sequence.nextval
)询问值。为了处理唯一性,它不会收回值并再次提供它们。
如果您总是想要删除密集的ID-s序列,则必须
DENSE_RANK
analytic function查询数据集,并将实际(表内)ID与行的排名分开。