如何在 SQL DEVELOPER 中设置表中主键的自动增量?

Ser*_*rum 5 sql oracle oracle11g

我一直在尝试像我们在 MySQL 中所做的那样将“w_no”设置为 auto_increment,但它一直在给出错误。

我们如何在 sql developer 中设置自动增量?我们可以通过代码来做还是必须做其他事情?

这是代码

CREATE TABLE ward (
      w_no      INT PRIMARY KEY AUTO_INCREMENT,
      wname     VARCHAR(30),
      w_loc     VARCHAR(30),
      phone_no  NUMERIC(10, 0),
      sno       INT
);

/*alter table ward ;*/  /*Can we do auto_increment using alter table here*/
Run Code Online (Sandbox Code Playgroud)

tha*_*ith 6

不要使用 VARCHAR,使用 VARCHAR2

此外,如果您需要帮助,请尝试创建表对话框。

我们将为您创建表、PK、序列和触发器。

或者,如果您使用的是 12c 或更高版本的数据库,则可以使用 IDENTITY 子句。

在此处输入图片说明

然后单击向导的 DDL 页面,我们将向您展示代码,因此您不必猜测对话框在做什么。

CREATE TABLE TABLE1 
(
  COLUMN1 INTEGER NOT NULL 
, COLUMN2 VARCHAR2(20) 
, COLUMN3 VARCHAR2(20) 
, CONSTRAINT TABLE1_PK PRIMARY KEY 
  (
    COLUMN1 
  )
  ENABLE 
);

CREATE SEQUENCE TABLE1_SEQ;

CREATE TRIGGER TABLE1_TRG 
BEFORE INSERT ON TABLE1 
FOR EACH ROW 
BEGIN
  <<COLUMN_SEQUENCES>>
  BEGIN
    IF INSERTING AND :NEW.COLUMN1 IS NULL THEN
      SELECT TABLE1_SEQ.NEXTVAL INTO :NEW.COLUMN1 FROM SYS.DUAL;
    END IF;
  END COLUMN_SEQUENCES;
END;
/
Run Code Online (Sandbox Code Playgroud)


ale*_*erm 2

我认为 Oracle 直到 12c 才引入 IDENTITY 数据类型。在这种情况下,您应该使用 SEQUENCE 对象来代替 IDENTITY 类型的缺失。