Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cột tự động tăng dần - Trình tự làm giá trị mặc định trong Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle CLOB không thể chèn quá 4000 ký tự?

  2. Khám phá các kiểu cấp gói PL / SQL bằng cách sử dụng dạng xem từ điển Oracle

  3. Có phải nhà cung cấp OraOLEDB trong .NET không đáng tin cậy trên các trường CLOB?

  4. Sao lưu trực tuyến Vs ngoại tuyến

  5. Hàm CHR () trong Oracle