Home > Database > Mysql Tutorial > How to Create Auto-Incrementing Columns in Oracle 11g and Later?

How to Create Auto-Incrementing Columns in Oracle 11g and Later?

Linda Hamilton
Release: 2025-01-23 23:31:20
Original
242 people have browsed it

How to Create Auto-Incrementing Columns in Oracle 11g and Later?

Creating AUTO_INCREMENT-like Columns in Oracle 11g

In Oracle versions up to 11g, the AUTO_INCREMENT column type is not natively available. However, there are alternative mechanisms to achieve similar functionality.

Using Sequences and Triggers

The most common approach in Oracle 11g is to use a combination of a sequence and a trigger:

Table Definition:

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;
Copy after login

Trigger Definition:

CREATE OR REPLACE TRIGGER dept_bir
BEFORE INSERT ON departments
FOR EACH ROW
BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/
Copy after login

This trigger assigns a unique, incremental value to the newly inserted rows, mimicking the behavior of auto-increment columns.

IDENTITY Columns (Oracle 12c )

In Oracle 12c and later, the IDENTITY column type was introduced, providing a true auto-increment feature:

Table Definition:

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

This definition creates a column 'c1' that automatically increments for each new row inserted into the table.

Alternatively, you can specify starting and increment values:

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

Using Sequences as Default Values (Oracle 12 )

Another option in Oracle 12 and later is to use a sequence as the default value for a column:

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)
);
Copy after login

This approach assigns incremental values using a sequence, but the actual increment operation is managed by the database.

The above is the detailed content of How to Create Auto-Incrementing Columns in Oracle 11g and Later?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template