sql - 如何在 Oracle 11g 中创建自动增量?

标签 sql oracle oracle11g auto-increment

我想为 Oracle 11g 中的主键生成一个 7 位标识符。主键的长度必须为 7 位。

这是我的代码:

CREATE SEQUENCE sequence_staff
MINVALUE 1
START WITH 1
INCREMENT BY 1;

CREATE TABLE Staff (
    Staff_ID    INT PRIMARY KEY, --Autoincrement 7 digit --PK
    Surname     VARCHAR2(50) NOT NULL,
    Firstnames  VARCHAR2(50) NOT NULL,
    Phone       VARCHAR2(30) NOT NULL,  --D1
    Address     VARCHAR2(150) NOT NULL
);

目前主键是 1(1 位),而不是 0000001(7 位)。有什么想法吗?

最佳答案

您必须按如下方式修改序列:

CREATE SEQUENCE sequence_staff
MINVALUE 1000000
START WITH 1000000
INCREMENT BY 1 NOCACHE NOCYCLE;

此外,您必须始终使用 sequence_staff.nextval 插入新的 staff_id 列。看看它是如何工作的

select sequence_staff.nextval from dual; --repeated times.

在此处阅读有关序列的更多信息 https://docs.oracle.com/cd/B28359_01/server.111/b28310/views002.htm

编辑:

是的,这是可能的。按照您创建的方式创建序列并:

select to_char(sequence_staff.nextval,'FM0000000') from dual;

编辑 2:

此链接值得信任。 http://stackoverflow.com/questions/14561210/creating-a-sequence-for-a-varchar2-field-in-oracle

编辑 3:如果您真的想要 Oracle 数据库中的结果,您必须:

1. alter table staff modify staff_id varchar(20);
2. CREATE SEQUENCE sequence_staff
MINVALUE 1
START WITH 1
INCREMENT BY 1 NOCACHE NOCYCLE;
3. insert into staff(Staff_id, surname,firstnames, phone,address) values(to_char(sequence_staff.nextval,'FM0000000'),'Wayne','Bruce','0000','Gotha‌​m'); 

Result

关于sql - 如何在 Oracle 11g 中创建自动增量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36675047/

相关文章:

sql - 知道15分钟的日期间隔中的日期是SQL SERVER

oracle - 包的初始化部分

asp.net - 如何在只有 Oracle 12c 的机器上托管使用 Oracle 11g 的 ASP.NET 应用程序?

java - 如何正确地将参数值传递给sql查询? java、netbeans

sql - Oracle SQL 语句中条件的顺序重要吗?

SQL IsNumeric 函数

sql - 如何在oracle表中搜索新行字符?

oracle - 获取Oracle中的调用包/过程

c# - 为 Oracle 返回一个记录集作为 HTML

sql - SQL 中以逗号分隔列的形式重复记录