Trình tự trong tiên tri là gì
- Oracle Sequence là một đối tượng do người dùng tạo có thể được nhiều người dùng chia sẻ để tạo ra các số nguyên duy nhất
- Công dụng chung nhất của chuỗi sẽ là tạo cột khóa chính trong bảng.
- Trình tự được tạo bởi quy trình nội bộ của oracle, vì vậy chúng tôi không cần phải lo lắng về điều đó. Nó sẽ tiết kiệm thời gian3 vì nhà phát triển không cần tạo quy trình tạo trình tự
- Trình tạo số tuần tự, có thể được định cấu hình để tăng hoặc giảm
- Nó chỉ tồn tại trong từ điển dữ liệu, có thể bị giới hạn hoặc có thể lặp lại (chu kỳ).
- Chúng tôi cần tạo đặc quyền trình tự để tạo trình tự
Tạo một chuỗi được thực hiện bằng cách sử dụng
TẠO PHÂN TÍCH
[BẮT ĐẦU VỚI] [TĂNG BẰNG] [KHÔNG / MINVALUE] [KHÔNG / MAXVALUE] [KHÔNG / CYCLE] [KHÔNG / CACHE];
|
Mô tả của từng giá trị
BẮT ĐẦU VỚI | Nó xác định giá trị ban đầu của chuỗi ( mặc định 1 ), |
TĂNG BẰNG | Nó xác định mức tăng hoặc giảm ( mặc định 1 ), |
MINVALUE | Nó xác định giá trị thấp nhất cho một chuỗi giảm dần |
MAXVALUE | Nó xác định giá trị cao nhất cho một chuỗi ngày càng tăng |
CHU KỲ | Nó xác định xem trình tự có lặp lại chính nó hay không |
CACHE | Nó xác định khối số thứ tự được giữ trong bộ nhớ ( mặc định 20 ), NOCACHE buộc cập nhật từ điển dữ liệu cho mỗi số được tạo bởi chuỗi |
Ví dụ
tạo chuỗi test_tech bắt đầu với 1 tăng 1 maxvalue 10000 cycle cache 20;
tạo trình tự test_tech1
bắt đầu với 1 |
Cách sử dụng chuỗi
Để sử dụng trình tự, chỉ cần sử dụng cột giả CURRVAL và NEXTVAL
Cột giả NEXTVAL
Nó được sử dụng để tạo số thứ tự liên tiếp của trình tự được chỉ định
Cột giả CURRVAL
Nó chứa trình tự mà người dùng vừa tạo
CHỌN TEST_TECH.NEXTVAL TỪ KÉP;
CHỌN TEST_TECH.CURRVAL TỪ KÉP; CHỌN TEST_TECH.NEXTVAL TỪ KÉP; |
Cách sửa đổi trình tự
Chúng tôi có thể sửa đổi các trình tự bằng cách sử dụng trình tự thay đổi.
SQL> ALTER SEQUENCE tech_test1 TĂNG 50; |
Các thay đổi chỉ ảnh hưởng đến việc sử dụng trình tự trong tương lai.
Bạn phải là chủ sở hữu hoặc có đặc quyền thay thế trên trình tự đó
Chúng tôi không thể thay đổi tùy chọn bắt đầu bằng. Đối với trình tự này cần phải được loại bỏ và tạo lại
Các thay đổi trình tự cũng được xác thực
Cách bỏ trình tự
Bỏ chế độ xem được thực hiện bằng lệnh DROP trình tự.
Trình tự thả test_tech; |
Chế độ xem từ điển để xem dữ liệu trình tự
Chi tiết trình tự có thể được truy vấn từ từ điển bằng cách truy vấn USER_SEQUENCES, ALL_ SEQUENCES hoặc DBA_ SEQUENCES. Có ba loại chế độ xem
USER_% | Chế độ xem này chỉ chứa thông tin về các đối tượng do người dùng sở hữu
Ví dụ USER_TABLES, USER_TAB_COLS |
ALL-% | Dạng xem này chứa thông tin về các đối tượng mà người dùng có thể truy cập trong cơ sở dữ liệu.
Ví dụ ALL_TABLES, ALL_TAB_COLS |
DBA_% | Chế độ xem này chứa thông tin của tất cả các đối tượng trong hệ thống và đây là các chế độ xem bị hạn chế mà người dùng có vai trò DBA có thể truy cập
Ví dụ DBA_TABLES, DBA_TAB_COLS |
DBA_% lượt xem về thông tin chuỗi | ALL_% lượt xem về thông tin chuỗi | USER_% lượt xem về thông tin chuỗi | |
Xem về chuỗi thông tin | dba_sequences | all_ sequences | user_ sequences |
Để liệt kê tất cả các chuỗi được sở hữu bởi việc sử dụng hiện tại
chọn tên_trình_tự từ user_sequences;
Để liệt kê tất cả các chuỗi trong cơ sở dữ liệu:
Chọn chủ sở hữu, tên_trình từ dba_sequences;
Để liệt kê các chuỗi mà người dùng hiện tại có thể truy cập:
chọn tên_trình_tự từ all_sequences
Làm cách nào để xác định tất cả thông tin về trình tự?
chọn tên_tốc_tri, giá_trị_tối_đa, giá_trị_tối đa, giá_trị_tăng_số, số_số_ cuối cùng
FROM DBA_SEQUENCES
trong đó OWNER =‘
và sequence_NAME =‘
Cách truy xuất giá trị hiện tại của một chuỗi tiên tri mà không tăng giá trị đó
Cột last_number hiển thị số thứ tự có sẵn tiếp theo nếu không có bộ nhớ cache nào được chỉ định
CHỌN last_number
FROM user_sequences
WHERE sequence_name =‘ |
Cách trích xuất định nghĩa trình tự (câu lệnh DDL) từ cơ sở dữ liệu Oracle mà không cần phải đi qua một đống chế độ xem từ điển
Cú pháp:
SQL> set long 1000 SQL> set pagesize 0select DBMS_METADATA.GET_DDL (‘SEQUENCE’, '
|
Cách đặt giá trị LASTVALUE trong Trình tự Oracle
ALTER SEQUENCE tech_seq_name TĂNG 250;
CHỌN tech_seq_name.nextval TỪ kép; ALTER SEQUENCE tech_seq_name TĂNG BẰNG 1; |
Cách đặt lại trình tự trong Oracle
Có nhiều cách.
a) Chúng ta có thể thả và tạo lại chuỗi. Nhưng điều này làm mất hiệu lực tất cả các đối tượng phụ thuộc (trình kích hoạt / thủ tục được lưu trữ, v.v.)
b) Chúng tôi có thể đặt lại bằng các bước đơn giản sau
Bước 1:Tìm giá trị mới nhất của dãy
Chọn tech_seq_name.nextval TỪ kép; Bước 2:thay đổi trình tự với sự gia tăng giá trị âm của giá trị mới nhất
ALTER SEQUENCE tech_seq_name INCREMENT BY - Bước 3 Thực hiện tiếp theo để đặt nó về 0 CHỌN tech_seq_name.nextval TỪ kép; Bước 4:Thay đổi mức tăng trở lại 1 ALTER SEQUENCE tech_seq_name TĂNG BẰNG 1; Ví dụ CHỌN tech_seq_name.nextval TỪ kép; ————————————— 250 ALTER SEQUENCE tech_seq_name TĂNG -250; CHỌN tech_seq_name.nextval TỪ kép; ALTER SEQUENCE tech_seq_name TĂNG BẰNG 1; |
Bạn có thể tìm thêm trên liên kết này
Cách đặt lại trình tự
Tác động của việc lưu vào bộ nhớ đệm các trình tự
Trình tự được lưu vào bộ nhớ đệm với mục đích cải thiện hiệu suất tìm nạp. Trong RAC, mỗi phiên bản lưu trữ các giá trị bộ nhớ đệm
Chúng ta có thể có khoảng trống trong trình tự khi sử dụng bộ nhớ cache do những lý do sau
- Quá trình khôi phục xảy ra
- Sự cố hệ thống hoặc sự cố phiên bản
- Trình tự được sử dụng trong một bảng khác
Có một tính năng mới trong Oracle 12c cho các chuỗi
Chuỗi phiên
Với Cơ sở dữ liệu Oracle 12C các từ khóa mới SESSION, GLOBAL có sẵn có thể được chỉ định trong quá trình tạo chuỗiTẠO SEQUENCE test_session_seq BẮT ĐẦU VỚI 1 TĂNG BẰNG 1 PHẦN;
TẠO SEQUENCE test_global_seq BẮT ĐẦU VỚI 1 TĂNG BẰNG 1 GLOBAL;
Toàn cầu | Phiên |
tạo chuỗi tiêu chuẩn nổi tiếng trong bản phát hành trước. Đây là mặc định. | tạo trình tự phiên kiểu mới, là kiểu trình tự đặc biệt được thiết kế đặc biệt để sử dụng với các bảng tạm thời toàn cầu có khả năng hiển thị phiên. Chuỗi phiên trả về một dải số thứ tự duy nhất chỉ trong một phiên, nhưng không trả về giữa các phiên. Một điểm khác biệt nữa là trình tự phiên không liên tục. Nếu một phiên biến mất, trạng thái của các chuỗi phiên được truy cập trong phiên cũng vậy. |