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

tạo bảng với sequence.nextval trong oracle

Oracle 12c

Bây giờ chúng ta cuối cùng đã có IDENTITY giống như nhiều cơ sở dữ liệu khác, trong trường hợp một chuỗi được tạo tự động ở hậu trường. Giải pháp này nhanh hơn nhiều so với giải pháp dựa trên trình kích hoạt như bạn có thể thấy trong bài đăng trên blog này.

Vì vậy, tạo bảng của bạn sẽ giống như sau:

CREATE TABLE qname
(
    qname_id integer GENERATED BY DEFAULT AS IDENTITY (START WITH 1) NOT NULL PRIMARY KEY,
    qname    VARCHAR2(4000) NOT NULL -- CONSTRAINT qname_uk UNIQUE
);

Oracle 11g trở xuống

Theo tài liệu, bạn không thể làm điều đó:

Hạn chế đối với giá trị cột mặc định Một biểu thức DEFAULT không được chứa tham chiếu đến các hàm PL / SQL hoặc các cột khác, các cột giả CURRVAL, NEXTVAL, LEVEL, PRIOR và ROWNUM hoặc các hằng số ngày không được chỉ định đầy đủ.

Cách tiêu chuẩn để có các cột "tăng tự động" trong Oracle là sử dụng trình kích hoạt, ví dụ:

CREATE OR REPLACE TRIGGER my_trigger
  BEFORE INSERT 
  ON qname
  FOR EACH ROW
  -- Optionally restrict this trigger to fire only when really needed
  WHEN (new.qname_id is null)
DECLARE
  v_id qname.qname_id%TYPE;
BEGIN
  -- Select a new value from the sequence into a local variable. As David
  -- commented, this step is optional. You can directly select into :new.qname_id
  SELECT qname_id_seq.nextval INTO v_id FROM DUAL;

  -- :new references the record that you are about to insert into qname. Hence,
  -- you can overwrite the value of :new.qname_id (qname.qname_id) with the value
  -- obtained from your sequence, before inserting
  :new.qname_id := v_id;
END my_trigger;

Đọc thêm về Oracle TRIGGERs trong tài liệu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm SUBSTR () trong Oracle

  2. Sử dụng PL / SQL làm cách nào để tôi đưa nội dung của tệp vào một đốm màu?

  3. Làm thế nào để tách một chuỗi trong PL / SQL?

  4. Kết nối Oracle với SQL Server qua một kết nối an toàn

  5. Cách tìm Lịch sử chờ đợi của phiên Oracle