oracle
中不能设置自动增加,这个和其他数据库不一样,但是有
序列,这个是Oracle自己特有的东西,
首先创建序列:
create
sequence
seq;
这就创建好了,然后
seq.nextval
就会返回一个值,不会重复的值,
insert
into
tablename
values(seq.nextval,'001','javabook');
分别是
oracle:
oracle没有自增长序列,所以呢可以用以下方法来实现
①建立表格:
createtabletable1
(
);
createsequenceemp_sequence
incrementby1--每次加几个
startwith1--从1开始计数
nomaxvalue--不设置最大值
nocycle--一直累加,不循环
createorreplacetriggermytgr
beforeinsertontable1foreachrow
begin
selectmytgr.nextvalinto:new.cidfromdual;
end;
mysql:
createtabletbname(a_idunsignedintprimarykeyauto_incrementnotnull,
a_contenttext);
这里Oracle数据库使用命令行操作,注意Oracle不能直接设置自增字段,需要使用序列+触发器来实现.
①创建Book表
Create table Book(
create sequence BOOK_seq (BOOK_seq为序列名,任意取)
increment by 1 (increment 表示字段逐条增加1)
start with 1 (设置自增序列的初始值为1)
nomaxvalue (不限制自增序列的最大值)
minvalue 1; (设置自增序列的最小值为1)
'a','1.jpg');
注意:
操作之后记得输入"commit;"保存操作.
首先,Oracle中没有像MySQL那样的id自增长功能
如果要用Oracle这么做的话首先要先建一个表,如:
CREATE
TABLE
test(
ID
NOT
NULL
PRIMARY
KEY,
NAME
PHONE
VARCHAR(10),
ADDRESS
然后,你需要一个自定义的sequence:
SEQUENCE
emp_sequence
INCREMENT
BY
--
每次加几个
START
WITH
从1开始计数
NOMAXVALUE
不设置最大值
NOCYCLE
一直累加,不循环
NOCACHE
不建缓冲区
你只有了表和序列还不够,还需要一个触发器来执行它:
TRIGGER
"触发器名称"
BEFORE
INSERT
ON
example
FOR
EACH
ROW
WHEN
(new.id
is
null)
select
emp_sequence.nextval
into:
new.id
from
dual;
这时你再向test表中插数据就可以不用管id了
oracle的自增需要依靠序列和触发器共同实现
比如
先创建一个表
create?table?test(id?int?primary?key,
创建一个序列
create?sequence?test_seq?
increment?by?1?
start?with?1?
minvalue?1?
nocache?
order;
触发器实现
create?or?replace?trigger?test_trigger
before?insert?on?testfor?each?row
begin??
select?test_seq.Nextval?into:new.id?from?dual;
然后你试试吧
insert?into?test?(name)?values?('张三');
用触发器trigger的功能来实现它: 1、首先建立一个创建自增字段的存储过程create or replace procedure pro_create_seq_col
as
execute immediate strsql;
strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end;';
/
GRANT CREATE ANY TRIGGER TO UserName;
exec pro_create_seq_col('sb_sbxx','sbxh');
exec pro_create_seq_col('sb_jkx','pzxh');
exec pro_create_seq_col('sdspfp','sysfpid');
以上就是土嘎嘎小编为大家整理的oracle如何创建自增相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!