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

Làm thế nào để tạo một chuỗi Oracle bắt đầu với giá trị tối đa từ một bảng?

Nếu bạn có thể sử dụng PL / SQL, hãy thử (CHỈNH SỬA:Kết hợp đề xuất xlnt của Neil để bắt đầu ở giá trị cao hơn tiếp theo):

SELECT 'CREATE SEQUENCE transaction_sequence MINVALUE 0 START WITH '||MAX(trans_seq_no)+1||' INCREMENT BY 1 CACHE 20'
  INTO v_sql
  FROM transaction_log;

EXECUTE IMMEDIATE v_sql;

Một điểm khác cần xem xét:Bằng cách đặt tham số CACHE thành 20, bạn có nguy cơ mất tới 19 giá trị trong trình tự của mình nếu cơ sở dữ liệu gặp sự cố. Giá trị CACHEd bị mất khi khởi động lại cơ sở dữ liệu. Trừ khi bạn thường xuyên đánh trúng chuỗi, hoặc bạn không quan tâm nhiều đến những khoảng trống, tôi sẽ đặt nó thành 1.

Một nit cuối cùng:các giá trị bạn đã chỉ định cho CACHE và INCREMENT BY là giá trị mặc định. Bạn có thể bỏ chúng đi và nhận được kết quả tương tự.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi 1985-02-07T00:00:00.000Z (ISO8601) thành một giá trị ngày tháng trong Oracle?

  2. Cách nhanh chóng để tạo các chuỗi được nối trong Oracle

  3. Video:Hiệu suất cột IDENTITY của Oracle 12c trên RAC

  4. Chỉ mục phân vùng Oracle

  5. Bảng bên ngoài Oracle