Thứ Hai, 24 tháng 7, 2023

Tìm hiểu Sequence trong Oracle

Trong bài này chúng ta sẽ tìm hiểu một đối tượng thường được dùng để tạo ra các số tăng dần hoặc giảm dần trong Oracle, đó là Sequence. Mỗi một Sequence được tạo ra sẽ được lưu trữ trên hệ thống cho đến khi bạn thực hiện một thao tác xóa.

Mục lục

  • 1. Sequence trong Oracle là gì?
  • 2. Tạo sequence trong Oracle
  • 3. Sửa sequence trong Oracle
  • 4. Xóa sequence trong Oracle

1. Sequence trong Oracle là gì?

Sequence là đối tượng đặc biệt trong Oracle, nó có nhiều thuộc tính giúp quản lý và tạo ra các số tăng dần hoặc giảm dần, được lưu trữ vĩnh viễn và global trong database, trừ khi bạn xóa nó.

Cấu trúc của Sequence như sau:

1
2
3
4
5
CREATE SEQUENCE emp_sequence
      INCREMENT BY 1
      START WITH 1
      MAXVALUE 30
      NOCYCLE;

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • INCREMENT BY 1: Là bước nhảy mỗi lần là 1 đơn vị, bạn có thể đổi thành 2 hay 3 đơn vị tùy thích.
  • START WITH 1: Là giá trị ban đầu, bạn có thể đổi 1 thành một số bất kì
  • MAXVALUE 30: Là giá trị tối đa, nếu bạn muốn không giới hạn thì đổi thành NOMAXVALUE.
  • NOCYCLE: Cấu hình không thể tạo ra thêm giá trị sau khi đạt tới mức tối đa hoặc tối thiểu. Nếu bạn muốn vẫn tạo thì đổi thành CYCLE.

Ngoài ra vẫn còn rất nhiều tham số khác và bạn có thể tham khảo tại đây.

2. Tạo sequence trong Oracle

Giả sử mình chạy câu lệnh sau để tạo sequence.

1
2
3
4
5
CREATE SEQUENCE my_sequence
  INCREMENT BY 10
  MINVALUE 10
  MAXVALUE 30
  CYCLE;

Ý nghĩa của nó như sau: Tạo ra sequence có tên là my_sequence, bước nhảy là 10, giá trị bắt đầu là 10, giá trị tối đa là 30, có thể lặp lại từ đầu nếu vượt quá giá trị tối đa.

Ta thử thực hành một vài lệnh xem có đúng không nhé.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT my_sequence.NEXTVAL FROM dual;
# Kết quả: 10
 
SELECT my_sequence.NEXTVAL FROM dual;
# Kết quả: 20
 
SELECT my_sequence.NEXTVAL FROM dual;
# Kết quả: 30
 
SELECT my_sequence.NEXTVAL FROM dual;
# Kết quả: 10
 
SELECT my_sequence.NEXTVAL FROM dual;
# Kết quả: 20

Mỗi khi ta gọi tới my_sequence.NEXTVAL thì giá trị của nó sẽ được tăng lên. Theo mặc định thì sequence hoạt động global nên bạn có thể gọi nó ở bất kì ở đâu trong câu lệnh SQL.

3. Sửa sequence trong Oracle

Bạn hoàn toàn có thể sửa sequence bằng câu lệnh ALTER SEQUENCE và đằng sau đó là những thông cần tin thay đổi, nếu thuộc tính nào bạn không liệt kê tức là nó sẽ giữ giá trị cũ như lúc khơi tạo. Hãy xem ví dụ minh họa dưới đây.

1
2
3
4
5
ALTER SEQUENCE my_sequence
  INCREMENT BY 1
  MINVALUE 1
  MAXVALUE 1000000
  NOCYCLE;

Bạn cần phải kiểm tra kỹ sequence có đang sử dụng ở đâu không, nếu có thì những thay đổi này có ảnh hưởng gì không nhé, khi nào chắc chắn mọi thứ ổn thì hãy thực hiện.

4. Xóa sequence trong Oracle

Cũng giống như các đối tượng khác, bạn có thể xóa sequence bằng cách sử dụng lênh DROP SEQUENCE.

1
2
3
DROP SEQUENCE my_seq_1;
DROP SEQUENCE my_seq_2;
DROP SEQUENCE my_schema.my_seq_3;

Ở ví dụ thứ 3 là bạn đã chỉ rõ sequence thuộc schema nào.

Một ứng dụng thường dùng của sequence trong thực tế đó là thiết lập ID tăng tự động.

Trên là những cách dùng cơ bản của sequence, nếu bạn muốn tìm hiểu chi tiết hơn thì hãy lên trang chủ của Oracle để đọc phần tài liệu hướng dẫn của nó nhé.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master