列ID上的身份无法正常运行

时间:2018-06-25 10:46:39

标签: sql oracle

使用身份自动序列时出现问题。 一开始一切正常,但之后开始显示更大的数字

ID NAZIV         KATEGORIJA                    OPIS              OBAVLJENO
-- --------------- ------------------- ----------------------------- ---------
21 osmi zadatak    pl/sql blok        kreiranje anonimnog pl/sql blo  n
                       ka

 1 prvi zadatak    kreiranje tablespac kreiranje tablespace-a sa odre y
           -a              djenim karakteristikama

 2 drugi zadatak   kreiranje usera     kreiranje usera sa odredjenim  y
                       karakteristikama

 3 treci zadatak   kreiranje tabele    kreiranje tabele sa testnim po y
                       dacima

 4 cetvrti zadatak kreiranje b-tree in kreianje b-tree indexa nad kol y
           dexa            onom id

 5 peti zadatak    kreiranje sequence  kreiranje sequence seq_zadaci_ y
                       id

 6 sesti zadatak   ubacivanje podataka ubacivanje podataka u tabelu i y
            u tabelu        izvrsiti nekoliko izmena

 7 sedmi zadatak   kreiranje paketa    kreiranje paketa sa uskladiste n
                       nim procedurama

到目前为止,一切正常,所以我调用了表中的所有数据:

SQL> insert into zadaci (naziv, kategorija, opis, obavljeno)
  2  values ('osmi zadatak', 'pl/sql blok', 'kreiranje anonimnog pl/sql bloka', 'n');

1 个答案:

答案 0 :(得分:1)

“身份”列在后台使用序列。

From the concepts guide

  

如果生成并在最终回滚的事务中使用了单个序列号,则可以跳过。

     

警告:

     

如果您的应用程序需要一组无间隙的数字,则不能使用Oracle序列。您必须使用自己开发的代码序列化数据库中的活动。

可以预见到间隙,这可能是由于插入回滚,手动调用序列(不太可能带有标识列)或数据库崩溃导致丢失的缓存值所致。

此外,如果您有RAC集群,则每个实例将具有自己的值缓存,并且在实例上运行的语句将从其各自的缓存中分配值,因此,如果与“ a”进行比较,则标识甚至可能不是严格顺序的。时间戳值。