我有一个带有标识的列,计数为 19546542,我想在删除所有数据后重置它。我需要像 ms sql 中的“dbcc checkident”之类的东西,但在 Oracle 中
mij*_*ved 10
从 Oracle 12c 及以上版本开始,您可以通过 3 种方式进行操作:
ALTER TABLE [TableName] MODIFY(ID GENERATED AS IDENTITY (START WITH 1));
ALTER TABLE [TableName] MODIFY ID GENERATED BY DEFAULT AS IDENTITY (START WITH LIMIT VALUE);
以上两种情况都允许您在标识列中插入带有值的数据
insert into [TableName] (ID, Name) VALUES (1, 'Name1');
insert into [TableName] (ID, Name) VALUES (2, 'Name2');
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE [TableName] MODIFY GENERATED ALWAYS AS IDENTITY (START WITH LIMIT VALUE);
但是,在这种情况下,它会限制您插入标识列值
insert into [TableName] (Name) VALUES ('Name1');
insert into [TableName] (Name) VALUES ('Name2');
Run Code Online (Sandbox Code Playgroud)
如果将值传递给标识列,则会出现以下错误
ORA-32795: 无法插入生成的始终标识列