我想为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位)。有什么想法吗?
发布于 2016-04-17 18:03:59
您必须修改序列,如下所示:
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','Gotham');

发布于 2020-11-18 22:58:11
CREATE TABLE staff
(
id NUMBER(7) NOT NULL,
surname VARCHAR2(50) NOT NULL,
firstnames VARCHAR2(50) NOT NULL,
phone VARCHAR2(30) NOT NULL,
address VARCHAR2(150) NOT NULL
);
ALTER TABLE Staff ADD (
CONSTRAINT staff_pk PRIMARY KEY (ID));
CREATE SEQUENCE staff_seq START WITH 1;触发器定义:
CREATE OR REPLACE TRIGGER staff_bir
BEFORE INSERT ON Staff
FOR EACH ROW
BEGIN
SELECT staff_seq.NEXTVAL
INTO :new.id
FROM dual;
END;https://stackoverflow.com/questions/36675047
复制相似问题