如何使用Oracle SQL Developer自动设置列增量?为什么表单被禁用?
注意:图片显示了Data Modeler,但问题和最佳答案是关于编辑现有数据库的问题。
答案 0 :(得分:74)
如果要使PK自动增量,则需要为该主键设置ID列属性。
请参阅下面的图片以便更好地理解。
答案 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中创建列自动增量 -
答案 7 :(得分:1)
更新:在Oracle 12c及更高版本中,我们可以选择创建自动增量字段,它比触发器和序列更好。
查看下图
从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:要修改的列不是标识列”之类的错误,则需要创建新列并删除旧列。