sql >> Databáze >  >> RDS >> Oracle

Jak vytvořit ID s AUTO_INCREMENT na Oracle?

V Oracle od Oracle 11g neexistuje nic takového jako sloupce „auto_increment“ nebo „identity“. . Můžete jej však snadno modelovat pomocí sekvence a spouště:

Definice tabulky:

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;

Definice spouštěče:

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

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

AKTUALIZACE:

IDENTITY sloupec je nyní k dispozici na Oracle 12c:

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

nebo zadejte počáteční a přírůstkové hodnoty a také zabraňte jakémukoli vložení do sloupce identity (GENERATED ALWAYS ) (opět pouze Oracle 12c+)

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

Alternativně Oracle 12 také umožňuje použít sekvenci jako výchozí hodnotu:

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. Dokumentace Oracle

  2. Vložení dat pomocí funkce s hodnotou tabulky na SQL Server

  3. Jak vytvořit seskupenou sestavu pomocí Průvodce sestavou v Accessu 2016

  4. Porovnávání bez rozlišování akcentů a velkých a malých písmen v Oracle s LIKE