Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách sử dụng chuỗi Oracle DB mà không làm mất số thứ tự tiếp theo trong trường hợp quay lại

Theo quan điểm của tôi, bạn nên sử dụng một trình tự và ngừng lo lắng về khoảng trống.

Theo quan điểm của bạn, tôi muốn nói rằng việc thay đổi trình tự là tệ hơn hơn là có một cái bàn. Lưu ý rằng quyền truy cập vào bảng đó phải được giới hạn cho một người dùng, nếu không bạn sẽ nhận được các giá trị trùng lặp nếu hai (hoặc nhiều) người dùng truy cập đồng thời.

Đây là một mã mẫu; hãy xem, sử dụng / điều chỉnh nó nếu bạn muốn.

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>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lấy đường dẫn của bảng phân cấp

  2. Có thể sử dụng trả lại trong thủ tục được lưu trữ không?

  3. 2 ưu đãi hàng đầu với tổng tất cả các ưu đãi

  4. Chèn ngày từ java vào Oracle DB

  5. Oracle PL / SQL:Động lặp lại các cột kích hoạt