Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara membuat id dengan AUTO_INCREMENT di Oracle?

Tidak ada kolom "auto_increment" atau "identitas" di Oracle pada Oracle 11g . Namun, Anda dapat memodelkannya dengan mudah dengan urutan dan pemicu:

Definisi tabel:

CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));

CREATE SEQUENCE dept_seq START WITH 1;

Definisi pemicu:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

PERBARUI:

IDENTITY kolom sekarang tersedia di Oracle 12c:

create table t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
    );

atau tentukan nilai awal dan kenaikan, juga mencegah penyisipan apa pun ke dalam kolom identitas (GENERATED ALWAYS ) (sekali lagi, hanya Oracle 12c+)

create table t1 (
    c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
    c2 VARCHAR2(10)
    );

Atau, Oracle 12 juga memungkinkan untuk menggunakan urutan sebagai nilai default:

CREATE SEQUENCE dept_seq START WITH 1;

CREATE TABLE departments (
  ID           NUMBER(10)    DEFAULT dept_seq.nextval NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan Tanda Mata Uang £, $ ke bidang tertentu ORACLE

  2. Mengonversi angka/angka dalam kata-kata untuk mata uang INR (Rupee India) di Oracle PL/SQL

  3. Cara menggunakan Oracle Associative Array dalam kueri SQL

  4. Cara mematikan pernyataan SELECT yang sedang berjalan

  5. Bisakah Anda PILIH semuanya, tetapi 1 atau 2 bidang, tanpa kram penulis?