Oracle Oracle 11g के रूप में में "auto_increment" या "पहचान" कॉलम जैसी कोई चीज़ नहीं है . हालांकि, आप इसे अनुक्रम और ट्रिगर के साथ आसानी से मॉडल कर सकते हैं:
तालिका परिभाषा:
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;
ट्रिगर परिभाषा:
CREATE OR REPLACE TRIGGER dept_bir
BEFORE INSERT ON departments
FOR EACH ROW
BEGIN
SELECT dept_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
अपडेट करें:
IDENTITY
कॉलम अब Oracle 12c पर उपलब्ध है:
create table t1 (
c1 NUMBER GENERATED by default on null as IDENTITY,
c2 VARCHAR2(10)
);
या शुरुआती और वृद्धि मान निर्दिष्ट करें, पहचान कॉलम में किसी भी प्रविष्टि को रोकने के लिए भी (GENERATED ALWAYS
) (फिर से, केवल Oracle 12c+)
create table t1 (
c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
c2 VARCHAR2(10)
);
वैकल्पिक रूप से, Oracle 12 एक अनुक्रम को डिफ़ॉल्ट मान के रूप में उपयोग करने की भी अनुमति देता है:
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));