Cột tự động tăng là một yêu cầu khá phổ biến trong mã hóa. Dưới đây là một số cách để có được điều đó trong Oracle
Tăng tự động trong oracle
Tính năng này (Cột tự động tăng của Oracle - Trình tự làm giá trị mặc định) không có trong cơ sở dữ liệu Oracle cho đến nay. Nhưng với 12c, oracle có thể cung cấp điều đó.
Giả sử chúng ta muốn thiết lập một bảng oracle trong đó chuỗi sẽ được tự động tăng lên khi chèn. Có nhiều cách để đạt được điều đó
Tùy chọn 1
Trước Oracle 12c, chúng ta cần sử dụng trước khi chèn trình kích hoạt để đạt được nó
create table test_lab ( id number primary key name varchar (10) ); create sequence test_lab_seq start with 1 increment by 1 nocycle; create or replace trigger test_lab_bef_auto before insert on test_lab for each row begin select test_lab_seq.nextval into :new.id from dual; end; /
hoặc
create or replace trigger test_lab_bef_auto
before insert on test_lab
for each row
begin
:new.id := test_lab_seq.nextval;
end;
/
Chúng tôi có thể chỉ định thời điểm id rỗng trong trình kích hoạt để tránh lỗi khi câu lệnh chèn có giá trị của cột id
insert into test_lab values ('john'); insert into test_lab values ('scott'); insert into test_lab values ('bill'); insert into test_lab values ('tom'); insert into test_lab values ('Duke'); commit; select * from test_lab;
Tùy chọn 2:
Với Oracle 12c, chúng tôi có thể chỉ định trực tiếp giá trị tiếp theo của chuỗi làm giá trị mặc định cho một cột, Vì vậy, bạn không cần phải tạo trình kích hoạt để điền vào cột với giá trị tiếp theo của chuỗi, bạn chỉ cần khai báo nó với định nghĩa bảng.
create sequence test_lab_seq start with 1 increment by 1 nocycle; create table test_lab ( id number default test_lab_seq.nextval primary key ); insert into test_lab values ('Cat1'); insert into test_lab values ('Cat2'); insert into test_lab values ('Cat3'); insert into test_lab values ('Cat4'); insert into test_lab values ('Cat5'); commit; select * from test_lab;
Tùy chọn 3
Với 12c, chúng tôi có thể sử dụng tính năng nhận dạng
create table test_lab ( id number(10) GENERATED AS IDENTITY, name varchar(15) ); Table created. Desc TEST_LAB Name Null? Type ---- ---- ---- ID NOT NULL NUMBER(10) NAME VARCHAR2(15)
- Chúng ta có thể thấy rằng ràng buộc NOT NULL được tự động áp đặt lên cột Identity
- Oracle sử dụng nội bộ chuỗi để điền các giá trị cột tăng tự động.
insert into test_lab values ('London'); insert into test_lab values ('New york'); insert into test_lab values ('Tokyo'); insert into test_lab values ('Delhi'); insert into test_lab values ('Bangalore'); commit; select * from test_lab;
Các bài viết Oracle Sql có liên quan
cách tạo bảng trong oracle
Cách tạo khung nhìn Oracle
Truy vấn Top-N và Phân trang
cách viết truy vấn sql
Xử lý giải mã sql Oracle