如何重置Oracle中的Identity列

时间:2016-09-02 14:57:24

标签: oracle

我有一个带有身份的列,其数量是19546542,我希望在删除所有数据后重置它。我需要像“dbcc checkident'在ms sql但在Oracle中

1 个答案:

答案 0 :(得分:1)

在Oracle 12c及更高版本中,您可以通过3种方式来实现:

  1. 手动将序列的下一个值重置为特定值:

    ALTER TABLE [TableName]修改(ID作为身份标识生成(以1开头));

  2. 自动将序列的下一个值重置为最大ID值:

    ALTER TABLE [TableName]缺省由身份标识生成的修改ID(以限制值开头);

以上两种情况都将允许您在标识列中插入具有值的数据

insert into [TableName] (ID, Name) VALUES (1, 'Name');
insert into [TableName] (ID, Name) VALUES (2, 'Name');
  1. 自动将序列的下一个值重置为最大ID:

    ALTER TABLE [TableName]始终以身份标识生成修改ID(以限制值开头);

但是,在这种情况下,它将限制您使用身份列值插入

insert into [TableName] (Name) VALUES ('Name');
insert into [TableName] (Name) VALUES ('Name');

如果将值传递给标识列,则会出现错误

  

ORA-32795:无法插入到生成的始终身份列