मेरे विचार से, आपको अनुक्रम का उपयोग करना चाहिए और अंतराल के बारे में चिंता करना बंद कर देना चाहिए।
आपके दृष्टिकोण से, मैं कहूंगा कि अनुक्रम को बदलना बदतर है एक टेबल होने की तुलना में। ध्यान दें कि उस तालिका तक पहुंच एक ही उपयोगकर्ता तक सीमित होनी चाहिए, अन्यथा यदि दो (या अधिक) उपयोगकर्ता इसे एक साथ एक्सेस करते हैं तो आपको डुप्लिकेट मान प्राप्त होंगे।
यहाँ एक नमूना कोड है; देखें, यदि आप चाहें तो इसका उपयोग/समायोजन करें।
SQL> create table broj (redni_br number not null);
Table created.
SQL>
SQL> create or replace function f_get_broj
2 return number
3 is
4 pragma autonomous_transaction;
5 l_redni_br broj.redni_br%type;
6 begin
7 select b.redni_br + 1
8 into l_redni_br
9 from broj b
10 for update of b.redni_br;
11
12 update broj b
13 set b.redni_br = l_redni_br;
14
15 commit;
16 return (l_redni_br);
17 exception
18 when no_data_found
19 then
20 lock table broj in exclusive mode;
21
22 insert into broj (redni_br)
23 values (1);
24
25 commit;
26 return (1);
27 end f_get_broj;
28 /
Function created.
SQL> select f_get_broj from dual;
F_GET_BROJ
----------
1
SQL> select f_get_broj from dual;
F_GET_BROJ
----------
2
SQL>