带有序列和触发器的 oracle 自动增量无法正常工作

use*_*456 3 sql oracle triggers stored-procedures sequence

这是我的问题我有这个代码在oracle数据库中创建一个自动增量变量:

CREATE TABLE Korisnici
    (
        id_korisnika number PRIMARY KEY,
        ime_korisnika varchar2(200),
        prezime_korisnika varchar2(200),
        broj_telefona varchar2(30),
        adresa_korisnika varchar2(400)
    )
    /

create sequence test_seq
start with 1 
increment by 1;

CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT ON Korisnici FOR EACH ROW
BEGIN
  SELECT test_seq.NEXTVAL
  INTO :NEW.id_korisnika
  FROM DUAL;
END;
/
Run Code Online (Sandbox Code Playgroud)

如果我从一开始一切都很好,我的数字为 1,2,3,4.... 我关闭程序,再次打开它,所以再次启动 oracle 数据库连接。我再添加一个输入,我有像 20、21、22、23 这样的数字……我把程序放在我的 android 上并从不同的设备连接,当我输入一个用户时,我有 30、31、33、34……

为什么会这样?以及如何修复它?

谢谢

编辑:

这是我从数据库读取数据的过程

CREATE OR REPLACE PROCEDURE Citanje_korisnika( p_rc OUT SYS_REFCURSOR )
AS
BEGIN
  OPEN p_rc
   FOR SELECT *
         FROM Korisnici;
END;
Run Code Online (Sandbox Code Playgroud)

我是 oracle 数据库的新手。

cag*_*boy 6

使用 NOCACHE 指定 SEQUENCE 将停止一次缓存 20 个数字的会话并提供帮助。

create sequence test_seq
start with 1 
increment by 1
NOCACHE;
Run Code Online (Sandbox Code Playgroud)

但是,如果您希望获得一个完全连续的序列,这很难实现 - 如果(例如)回滚插入,则从序列中获取的数字将“丢失”。


根据您的评论,我想知道您是否忘记了 COMMIT?