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

Trình kích hoạt Oracle để tạo số tự động

Một cái gì đó như thế này sẽ hoạt động vào 11g

CREATE SEQUENCE t1_id_seq 
  start with 10000 
  increment by 1;

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    :new.id := t1_id_seq.nextval;
  END IF;
END;

Nếu bạn đang sử dụng phiên bản cũ hơn, bạn sẽ cần thực hiện CHỌN VÀO để nhận giá trị tiếp theo từ chuỗi

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    SELECT t1_id_seq.nextval
      INTO :new.id
      FROM dual;
  END IF;
END;

Lưu ý rằng các chuỗi Oracle không có khoảng trống. Vì vậy, hoàn toàn có thể là các giá trị cụ thể sẽ bị bỏ qua vì nhiều lý do. Lần chèn đầu tiên của bạn có thể có ID là 10000 và lần chèn thứ hai có thể có ID là 10020 nếu quá trình này được thực hiện sau vài phút, vài giờ hoặc vài ngày.

Ngoài ra, hãy lưu ý rằng Oracle không hỗ trợ chỉ định nhiều hàng trong mệnh đề VALUES như MySQL. Vì vậy, thay vì

insert into t1 (firstname, lastname) values ('Michael','Jordan'),('Larry','Bird')

bạn cần hai câu lệnh INSERT riêng biệt

insert into t1 (firstname, lastname) values ('Michael','Jordan');
insert into t1 (firstname, lastname) values ('Larry','Bird');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tương thích Oracle 19c với jdk7

  2. Cách nhanh nhất để chèn một triệu hàng trong Oracle

  3. Làm thế nào để tạo đệ quy một khối mã pl / sql mà một khối làm việc với một số câu được chọn?

  4. Chênh lệch hiệu suất truy vấn pl / sql forall chèn và chèn SQL thuần túy

  5. Không thể đọc đúng bảng SQL trong python:các cột varchar được nhập dưới dạng ký tự / bộ giá trị được phân tách bằng dấu phẩy