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

时间:2012-06-12 03:53:47

标签: database oracle oracle-sqldeveloper

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

Oracle SQL Developer

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

8 个答案:

答案 0 :(得分:74)

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

  1. 右键单击表格并选择“编辑”。
  2. 在“编辑”表格窗口中,选择“列”,然后选择您的PK 列。
  3. 转到ID列选项卡,然后选择列序列作为类型​​。这将 创建一个触发器和一个序列,并将序列关联到 主键。
  4. 请参阅下面的图片以便更好地理解。

    enter image description here

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

答案 1 :(得分:26)

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

说这是你的表 -

CREATE TABLE MYTABLE (
  ID NUMBER NOT NULL,
  NAME VARCHAR2(100)
  CONSTRAINT "PK1" PRIMARY KEY (ID)
);

您需要创建一个序列 -

CREATE SEQUENCE S_MYTABLE
START WITH 1
INCREMENT BY 1
CACHE 10;

和触发器 -

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;

答案 2 :(得分:6)

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

答案 3 :(得分:3)

@ tom-studee你是对的,它可以在数据建模器中完成。

双击表格,然后转到列部分。在这里双击将具有自动增量的列。在一般部分中有一个复选框"自动增量",只需勾选它。

之后你也可以进入"自动增量"部分来定制它。

当您保存它并要求数据建模者生成SQL脚本时,您将看到代表您的自动增量的序列和触发器。

答案 4 :(得分:1)

Oracle没有自动增量列。你需要一个序列和一个触发器。这是一篇随机博客文章,解释了如何做到这一点:http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/

答案 5 :(得分:1)

如何使用Oracle SQL Developer执行此操作: 在左侧窗格中,在连接下您将找到“序列”,右键单击并从上下文相关的弹出窗口中选择创建新序列。填写详细信息:架构名称,序列名称,属性(以值,最小值,最大值,增量值等开头),然后单击“确定”。假设您有一个带有使用此auto_increment的键的表,而在此表中插入时,只需在使用此属性的字段中输入“your_sequence_name.nextval”。 我想这应该有帮助! :)

答案 6 :(得分:1)

我发现这篇帖子看起来有点陈旧,但我想我会根据我的新发现更新所有人。

我在Windows上使用Oracle SQL Developer 4.0.2.15。 我们的数据库是在Windows上运行的Oracle 10g(版本10.2.0.1)。

在Oracle中创建列自动增量 -

  1. 在“连接”选项卡中打开数据库连接
  2. 展开“表”部分,右键单击包含要更改为自动增量的列的表,然后选择“编辑...”。
  3. 选择“列”部分,然后选择要自动增加的列(主键列)
  4. 接下来,单击列列表下方的“标识列”部分,并将类型从“无”更改为“列序列”
  5. 保留默认设置(或根据需要更改序列和触发器的名称),然后单击“确定”。
  6. 您的id列(主键)现在将自动递增,但序列将从1开始。 如果您需要将id增加到某个点,则必须对序列运行一些alter语句 This post有更多细节以及如何克服这个问题。

    我找到了解决方案here

答案 7 :(得分:1)

更新:在Oracle 12c及更高版本中,我们可以选择创建自动增量字段,它比触发器和序列更好。

  • 右键单击表格,然后选择“编辑”。
  • 在“编辑”表窗口中,选择“列”,然后选择您的PK 列。
  • 转到“身份列”选项卡,然后选择“生成为身份”作为“类型”,在“开头为”和“增量”字段中均输入1。这将 使此列自动递增。

查看下图

enter image description here

从SQL语句

IDENTITY列现在在Oracle 12c上可用:

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

或指定起始值和增量值,还可以防止将任何插入身份列(始终生成)(同样,仅适用于Oracle 12c +)

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

编辑:如果遇到诸如“ ORA-30673:要修改的列不是标识列”之类的错误,则需要创建新列并删除旧列。