下面的代码能实现NUMBER类型变量PRODUCTIONID自动增长,
如果修改成VARCHAR2(20)类型,如何实现自动增长?--表PROJECT_MANAGE的PRODUCTIONID列设置为自动增长列
-- [1]创建数据表
create table PROJECT_MANAGE
(
--NUMBER类型能自动增长,修改成VARCHAR2类型如何自动增长???
PRODUCTIONID NUMBER(10) not null,
NAME VARCHAR2(20) not null,
REMARK VARCHAR2(50)
)--[2]创建一个序列
create sequence AUTO_ADD
increment by 1
start with 1
nomaxvalue
nocache --[3]创建一个触发器
create or replace trigger myProject
before insert on PROJECT_MANAGE
for each row
begin
if (:new.PRODUCTIONID is null) then
select AUTO_ADD.nextval into :new.PRODUCTIONID from dual;
end if;
end;--[4]插入记录
Insert into PROJECT_MANAGE
(NAME,REMARK)
Values
('姓名','备注说明')
如果修改成VARCHAR2(20)类型,如何实现自动增长?--表PROJECT_MANAGE的PRODUCTIONID列设置为自动增长列
-- [1]创建数据表
create table PROJECT_MANAGE
(
--NUMBER类型能自动增长,修改成VARCHAR2类型如何自动增长???
PRODUCTIONID NUMBER(10) not null,
NAME VARCHAR2(20) not null,
REMARK VARCHAR2(50)
)--[2]创建一个序列
create sequence AUTO_ADD
increment by 1
start with 1
nomaxvalue
nocache --[3]创建一个触发器
create or replace trigger myProject
before insert on PROJECT_MANAGE
for each row
begin
if (:new.PRODUCTIONID is null) then
select AUTO_ADD.nextval into :new.PRODUCTIONID from dual;
end if;
end;--[4]插入记录
Insert into PROJECT_MANAGE
(NAME,REMARK)
Values
('姓名','备注说明')
(
PRODUCTIONID VARCHAR2(20) not null,
NAME VARCHAR2(20) not null,
REMARK VARCHAR2(50)
)
1.建表
create table project_manage(
productionid VARCHAR2(20) not null,
name VARCHAR2(20) not null,
res VARCHAR2(50));2.序列
create sequence auto_add
start with 10000
increment by 10
nomaxvalue
nocache3.触发器
create or replace trigger myProject
before insert on project_manage
for each row
begin
if (to_char(:new.productionid) is null) then
select auto_add.nextval into :new.productionid from dual;
end if;
end;4.添加数据
SQL> insert into project_manage(name,res)
2 values('三峡工程','已经竣工');
1 row insertedSQL> insert into project_manage(name,res)
2 values('贵成铁路','马上动工');
1 row insertedSQL> insert into project_manage(name,res)
2 values('昆明新建机场','在建中...');
1 row inserted添加数据时,没有报错,说明productionid成功添加了序列值,
因为我们定义表时约束了not null;5.查看数据
SQL> select * from project_manage;PRODUCTIONID NAME REMARKS
-------------------- -------------------- --------------------------------------------------
10000 三峡工程 已经竣工
10010 贵成铁路 马上动工
10020 昆明新建机场 在建中...如我们所预测,sequence的number类型的数据别转换为了varchar2类型,
因为PRODUCTIONID这一列是左对齐的,如果树数据类型的话它将右对齐;
SQL> select 10010,to_char('10010') from dual; 10010 TO_CHAR('10010')
---------- ----------------
10010 10010
PRODUCTIONID类型是VARCHAR2,也可以自动增长。