gpt4 book ai didi

oracle - 清理 Oracle 序列

转载 作者:行者123 更新时间:2023-12-01 23:11:59 25 4
gpt4 key购买 nike

我广泛使用 SQL Server,但对 Oracle 的经验很少。我接到的任务是“清理”Oracle 数据库中的序列,但我不知道如何安全地完成此任务。

我需要确定表中实际的最大值(假设 ID = 105)。然后查看该 ID 的下一个序列是什么。如果是106,那就万事大吉了。如果是 110,那么我需要将其重置回 106。

我可以安全地删除一个序列然后重新创建它,还是会弄乱已经存在的主键?我猜这不会是一个问题,但在我升级别人的系统之前,我想问一下。

这是我要使用的命令

Drop Sequence blah.foo_seq
Create Sequence blah.foo_seq Start WIth 106 Min 1 Max 2147483647 yada yada

最佳答案

我通常会对“清理”Oracle 序列的需要保持警惕。由于 Oracle 序列不能用于生成无间隙值,因此如果 110 会给应用程序带来问题,则需要解决更大的问题。

删除序列对主键没有影响。但它确实会使引用该序列的任何对象失效并删除任何特权授予。您可以在重新创建序列后重新编译代码,删除权限可能会出现问题。

避免处理丢失权限的另一种方法是更改​​ INCREMENT BY 参数以减小序列值,即

ALTER SEQUENCE foo_seq
INCREMENT BY -4;

SELECT foo_seq.nextval
FROM dual;

ALTER SEQUENCE foo_seq
INCREMENT BY 1;

关于oracle - 清理 Oracle 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com