如何使用sql developer设置自动增量列

Fen*_*ono 38 database oracle oracle-sqldeveloper

如何将列设置为使用Oracle SQL Developer自动递增?为什么表单被禁用?

Oracle SQL Developer

注意:图像显示了Data Modeler,但问题和最佳答案是关于编辑现有数据库.

Dan*_*ník 80

如果要使PK自动递增,则需要为该主键设置ID列属性.

  1. 右键单击表格并选择"编辑".
  2. 在"编辑"表窗口中,选择"列",然后选择您的PK列.
  3. 转到ID列选项卡,然后选择列序列作为类型​​.这将创建一个触发器和一个序列,并将序列与主键相关联.

请参阅下面的图片以便更好地理解.

在此输入图像描述

//我的来源是:http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

  • 很好的答案.不知道为什么它没有更多的投资. (4认同)
  • 很好的答案。但是,我可以修改一下,查看“插入前检查列为空”的复选框很重要,这可能不是您想要的。使用序列 ID 时,您通常不希望从其他地方填充它,(可能取决于,但一定要考虑一下。) (2认同)

Ksh*_*tij 26

不幸的是,oracle不支持像mysql那样的auto_increment.你需要付出额外的努力来实现这一目标.

说这是你的桌子 -

CREATE TABLE MYTABLE (
  ID NUMBER NOT NULL,
  NAME VARCHAR2(100)
  CONSTRAINT "PK1" PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)

你需要创建一个序列 -

CREATE SEQUENCE S_MYTABLE
START WITH 1
INCREMENT BY 1
CACHE 10;
Run Code Online (Sandbox Code Playgroud)

和触发器 -

CREATE OR REPLACE TRIGGER T_MYTABLE_ID
BEFORE INSERT
ON MYTABLE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
  if(:new.ID is null) then
  SELECT S_MYTABLE.nextval
  INTO :new.ID
  FROM dual;
  end if;
END;
/

ALTER TRIGGER "T_MYTABLE_ID" ENABLE;
Run Code Online (Sandbox Code Playgroud)

  • 自2012年以来,情况发生了变化.随着Oracle Database 12c的到来,您现在确实可以做到这一点.以下是如何做到这一点:http://www.thatjeffsmith.com/archive/2014/01/defining-12c-identity-columns-in-oracle-sql-developer-data-modeler/ (3认同)
  • 我更喜欢丹的回答.与图片的那个.值得1000字. (2认同)

小智 6

您可以在SQL Modeler中进行自动增量.在列属性窗口中单击:常规,然后勾选自动增量框.之后,将为您启用自动增量窗口.