Lưu Quang Triệu

Không ngừng sáng tạo thì sẽ không sợ bị diệt vong

Hướng dẫn tạo bảng có ID tự động tăng trong Oracle

Posted by millionking on December 8, 2011

Giả sử bạn muốn tạo một bảng trong có trường ID (kiểu số) và ID này tự động tăng mỗi khi bạn insert dữ liệu vào bảng thì bạn có thể thực hiện theo các bước sau.

Tạo mới bảng

Trong bài này chúng ta sẽ cùng tạo bảng có tên là SOCIAL_NETWORKS để lưu tên những mạng xã hội phổ biến nhất hiện nay. Cấu trúc bảng này như sau:

Bảng SOCIAL_NETWORKS – lưu tên các mạng xã hội
id id – khóa chính kiểu số, tự động tăng
name tên mạng xã hội
description mô tả ngắn gọn về mạng xã hội

Bạn dùng nhóm lệnh sau trong SQL Plus để tạo bảng theo cấu trúc trên.

CREATE  SOCIAL_NETWORKS( ID NUMBER PRIMARY KEY,NAME
CHAR(20),DESCRIPTION VARCHAR(200));

Tạo mới bảng trong Oracle

Tạo mới một Sequence

Sau khi tạo bảng SOCIAL_NETWORKS chúng ta cần tạo 1 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à được tăng +1 cho mỗi lần một hàng dữ liệu mới được chèn vào bảng. Nhóm lệnh SQL để tạo Sequence này như sau:

CREATE SEQUENCE AUTO_INCREMENT_SEQUENCESTART WITH 1INCREMENT BY 1;

Tạo mới Sequence trong Oracle

Tạo mới 1 Trigger

Chúng ta sẽ dùng 1 Trigger để kích hoạt Sequence vừa tạo, Trigger này sẽ giúp gọi tới AUTO_INCREMENT_SEQUENCE để tăng trường ID lên 1 trước khi lệnh Insert dữ liệu vào bảng được gọi.

CREATE OR REPLACE TRIGGER AUTO_INCREMENT_TRIGGERBEFORE INSERTON
SOCIAL_NETWORKSREFERENCING NEW AS NEWFOR EACH ROWBEGINSELECT
AUTO_INCREMENT_SEQUENCE.NEXTVAL INTO :NEW.ID FROM DUAL;END;/

Tạo mới Trigger trong Oracle

Insert dữ liệu vào bảng và kiểm tra kết quả

Chèn dữ liệu vào bảng sau khi đã tạo cấu trúc

Sau khi tạo xong Table, Sequence và Trigger bạn dùng nhóm lệnh sau để chèn nhiều dòng dữ liệu chứa tên các mạng xã hội vào bảng SOCIAL_NETWORKS.

INSERT ALLINTO  SOCIAL_NETWORKS(NAME, DESCRIPTION)VALUES
('Facebook','Facebook - stylized facebook is a social networking service and
website launched in February 2004, operated and privately owned by Facebook,
Inc')INTO  SOCIAL_NETWORKS(NAME, DESCRIPTION)VALUES
('Flickr','Flickr is almost certainly the best online photo management and
sharing application in the world.')INTO  SOCIAL_NETWORKS(NAME,
DESCRIPTION)VALUES ('Twitter','Twitter is a website, owned and operated by
Twitter Inc., which offers a social networking and microblogging service,
enabling its users to send and read messages called tweets')INTO  SOCIAL_NETWORKS(NAME, DESCRIPTION)VALUES ('Youtube','YouTube is a
video-sharing website on which users can upload, share, and view videos, created
by three former PayPal employees in February 2005')INTO  SOCIAL_NETWORKS(NAME, DESCRIPTION)VALUES ('Digg','Digg is a place for people
to discover and share content from anywhere on the web')INTO  SOCIAL_NETWORKS(NAME, DESCRIPTION)VALUES ('StummbleUpon','StumbleUpon is a
discovery engine (a form of web search engine) that finds and recommends web
content to its users')SELECT * FROM DUAL;

Bạn chú ý nhớ chạy lệnh commit; trong SQL PLus để commit toàn bộ thao tác tạo bảng, sequence, trigger và insert dữ liệu ở trên.

 

 

Kiểm tra dữ liệu được chèn vào

Để kiểm tra các bản ghi được thêm vào  bạn dùng lệnh sau:

SELECT * FROM SOCIAL_NETWORKS

Danh sách dữ liệu sẽ được hiển thị

Truy vấn dữ liệu trong Oracle

Như vậy là bạn đã tạo thành công 1 bảng với trường ID tăng tự động trong Oracle, bảng của bạn được sử dụng để lưu tên những mạng xã hội phổ biến nhất hiện nay. Bạn cũng có thể áp dụng phương pháp này với những bảng đã có sẵn trong database, khi đó bạn chỉ cần tạo mới Sequence và Trigger để cài đặt tính năng tự động tăng ID cho bảng mà không cần bước tạo mới bảng ở trên.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: