ORACLE TIPS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Thiết lập ID tăng tự động trong Oracle

Với MySQL thì đã có AUTO_INCREMENT giúp tăng tự động cho trường khóa chính có kiểu dữ liệu là số nguyên, tuy nhiên với Oracle thì không có sẵn như vậy mà bạn phải kết hợp Sequence và Trigger để tạo sự kiện tăng ID lên 1 mỗi khi có thao tác Insert.

1. Các thiết lập ID tăng tư động trong Oracle

Giả sử mình cần tạo bảng dữ liệu TINTUC như sau:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
Field Data Type
ID number, tăng tự động
TITLE varchar(200)
DESCRIPTION varchar(500)

Và đây là câu lệnh dùng để tạo bảng này.

CREATE TABLE TINTUC
(
    ID NUMBER PRIMARY KEY,
    TITLE VARCHAR(200),
    DESCRIPTION VARCHAR(500)
)

Câu lệnh này sẽ tạo một bảng TINTUC với ID là khóa chính, tuy nhiên nó không hề tăng tự động. Để nó tăng tự động mỗi khi insert thì bạn thực hiện các bước sau.

Tạo Sequence

Sau khi tạo thành công bảng TINTUC thì ta sẽ tạo một SEQUENCE giúp tự động tăng trường ID cho bảng này, ID này sẽ có giá trị bắt đầu từ 1 và tăng +1 mỗi khi có lệnh INSERT.

CREATE SEQUENCE AUTO_INCREMENT_SEQUENCE
START WITH 1
INCREMENT BY 1;

Ok vậy là xong, bây giờ ta cần tạo trigger.

Tạo Trigger

Chúng ta dùng một trigger để kích hoạt Sequence vừa tạo, trigger này sẽ gọi đến AUTO_INCREMENT_SEQUENCE để tăng trường ID lên 1 trước khi lệnh INSERT thực hiện.

CREATE OR REPLACE TRIGGER AUTO_INCREMENT_TRIGGER
BEFORE INSERTON
SINHVIEN
REFERENCING NEW AS NEW
	FOR EACH ROWBEGINSELECT
	AUTO_INCREMENT_SEQUENCE.NEXTVAL INTO :NEW.ID
	FROM DUAL;
END;
/

Như vậy là bạn đã thiết lập thành công tăng tự động rồi đấy.

Lưu ý: Lệnh này chỉ có tác dụng trên một bảng, vì vậy nếu bạn có N bảng thì phải thực hiện N lần nhé.

2. Lời kết

Qua bài này nhận thấy việc thiết lập này là cần thiết trong trường hợp bạn muốn khóa chính tăng tự động, nó sẽ giúp cho việc truy vấn dữ liệu trở nên nhanh hơn rất nhiều vì mọi thứ đều được sắp xếp có thứ tự.

Cá nhân mình đang sử dụng MySQL nên cảm thấy Oracle quá rườm rà, tại sao nó không tạo một thông số cho việc thiết lập này vì nhu cầu thực tế rất cần thiết.

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top