我有一个带有身份的列,其数量是19546542,我希望在删除所有数据后重置它。我需要像“dbcc checkident'在ms sql但在Oracle中
答案 0 :(得分:1)
在Oracle 12c及更高版本中,您可以通过3种方式来实现:
手动将序列的下一个值重置为特定值:
ALTER TABLE [TableName]修改(ID作为身份标识生成(以1开头));
自动将序列的下一个值重置为最大ID值:
ALTER TABLE [TableName]缺省由身份标识生成的修改ID(以限制值开头);
以上两种情况都将允许您在标识列中插入具有值的数据
insert into [TableName] (ID, Name) VALUES (1, 'Name');
insert into [TableName] (ID, Name) VALUES (2, 'Name');
自动将序列的下一个值重置为最大ID:
ALTER TABLE [TableName]始终以身份标识生成修改ID(以限制值开头);
但是,在这种情况下,它将限制您使用身份列值插入
insert into [TableName] (Name) VALUES ('Name');
insert into [TableName] (Name) VALUES ('Name');
如果将值传递给标识列,则会出现错误
ORA-32795:无法插入到生成的始终身份列