我的Oracle 12c数据库中有一个系统生成的序列,我似乎无法摆脱它。在其上调用"drop sequence“将得到以下错误:
错误代码: ORA-32794
描述:无法删除系统生成的序列。
原因:有人试图删除系统生成的序列.
操作:不能删除系统生成的序列,例如为标识列创建的序列。
该序列用于为表的Id列生成值,并且该表不再存在。通常,我可以创建和删除这样的表,然后顺序随之下降。我不知道在这个实例中删除表的语句,但是我真的想删除杂乱的序列。
发布于 2019-11-21 22:50:02
您不应该需要显式地删除标识列序列,因为它与表相关联,使用purge选项删除表(或者正常删除并清空回收站)也会删除该序列。
create table test_tbl (id number generated as identity);
Table created.
select * from user_tab_identity_cols;
TABLE_NAME COLUMN_NAME GENERATION_TYPE SEQUENCE_NAME IDENTITY_OPTIONS
------------------------------ ----------- --------------- ------------- --------------------------------------------------------------------------------
TEST_TBL ID ALWAYS ISEQ$$_124811 START WITH: 1, INCREMENT BY: 1, MAX_VALUE: 9999999999999999999999999999, MIN_VAL删除该表将使表及其序列留在回收站中:
drop table test_tbl;
Table dropped.
select * from user_tab_identity_cols;
TABLE_NAME COLUMN_NAME GENERATION_TYPE SEQUENCE_NAME IDENTITY_OPTIONS
------------------------------ ----------- --------------- ------------- --------------------------------------------------------------------------------
BIN$gQ8wv//QTjK+mAGxdffxgQ==$0 ID ALWAYS ISEQ$$_124811 START WITH: 1, INCREMENT BY: 1, MAX_VALUE: 9999999999999999999999999999, MIN_VAL清空回收站可以清除:
purge recyclebin;
Recyclebin purged.
select * from user_tab_identity_cols;
no rows selected
select * from user_sequences where sequence_name like 'ISEQ$$%';
no rows selected发布于 2020-11-15 21:42:34
您可以使用purge关键字删除一个表,并使用一个drop命令清除系统生成的序列。
drop table mytable purge cascade constraintshttps://stackoverflow.com/questions/58984546
复制相似问题