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

sxpgvts3  于 2022-11-22  发布在  Oracle
关注(0)|答案(9)|浏览(302)

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

**注意:**该图显示了数据建模器,但问题和最上面的答案讨论的是编辑现有数据库。

tjrkku2a

tjrkku2a1#

如果要使PK自动递增,则需要设置该主键的ID列属性。
1.右键单击表格并选择“编辑”。
1.在“编辑”表窗口中,选择“列”,然后选择您的PK列。
1.转至“ID列”选项卡并选择“列序列”作为“类型”。这将创建一个触发器和一个序列,并将该序列与主键关联。
请参见下图,以便更好地理解。

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

ev7lccsx

ev7lccsx2#

不幸的是oracle不像mysql那样支持auto_increment。你需要付出一点额外的努力才能得到它。
说这是你的table-

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;
b4qexyjb

b4qexyjb3#

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

dgiusagp

dgiusagp4#

@tom-studee 你 是 对 的 , 可以 在 数据 建模 器 中 实现 。
双击 您 的 表格 , 然后 转到 列 部分 。 在 这里 双击 将 有 自动 增量 的 列 。 在 一般 部分 有 一 个 复选 框 " 自动 增量 " , 只需 勾 选 它 。
之后 , 您 还 可以 转到 " 自动 增量 " 部分 对其 进行 自 定义 。
当 您 保存 它 并 要求 数据 建模 师 生成 SQL 脚本 时 , 您 将 看到 表示 自动 增量 的 序列 和 触发 器 。

8ehkhllq

8ehkhllq5#

UPDATE:在Oracle 12 c之后,我们可以选择创建自动增量字段,它比触发器和序列更好。

  • 右键单击表格并选择“编辑”。
  • 在“编辑”表窗口中,选择“列”,然后选择您的PK列。
  • 转到"标识列“选项卡,选择“作为标识生成”作为类型,在“起始值”和“增量”字段中输入1。这将使此列自动增量。
    请参见下图

来自SQL语句

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

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

或者指定起始值和增量值,同时防止向标识列中插入任何内容(始终生成)(同样,仅适用于Oracle 12 c+)

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

EDIT:如果遇到任何错误,如“ORA-30673:要修改得列不是标识列”,“则需要创建新列并删除旧列.

vojdkbi0

vojdkbi06#

我发现了这篇文章,它看起来有点旧,但我想我会更新我的新发现大家。
我正在Windows上使用Oracle SQL Developer 4.0.2.15。我们的数据库是在Windows上运行的Oracle 10g(版本10.2.0.1)。
要在Oracle中使列自动递增,请执行以下操作:
1.在“连接”选项卡中打开数据库连接
1.展开“表”部分,右键单击包含要更改为自动增量的列的表,然后选择编辑...
1.选择“列”部分,然后选择要自动递增的列(主键列)
1.接下来,单击列列表下方的“标识列”部分,并将类型从“无”更改为“列序列”
1.保留默认设置(或者根据需要更改序列和触发器的名称),然后单击确定
id列(主键)现在将自动递增,但序列将从1开始。如果需要将id递增到某个点,则必须对序列运行几个alter语句。
这篇文章有更多的细节和如何克服这一点。
我找到了解决方案here

xxe27gdn

xxe27gdn7#

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

2guxujil

2guxujil8#

如何使用Oracle SQL Developer执行此操作:在左窗格中,在连接下你会发现“序列”,右击并从上下文相关的弹出窗口中选择创建一个新序列。填写详细信息:模式名称、序列名称、属性(以值、最小值、最大值、增量值等开始),然后单击确定。假设您有一个表,其中的键使用此auto_increment,在此表中插入时,只需在使用此属性的字段中给予“your_sequence_name.nextval”。我想这会有所帮助!:)

w80xi6nr

w80xi6nr9#

将表格从左侧菜单拖放到工作表中,你会得到一个选项列表。选择“插入”,然后应用,然后完成。

相关问题