您的位置:首页 > 数据库 > Oracle

Oracle之创建自增的ID

2016-02-29 17:17 549 查看
首先:先创建一个测试表;

CREATE TABLE example(

ID Number(4) ,

NAME VARCHAR(25)<pre name="code" class="html">, PRIMARY KEY(ID)
);


然后自定义一个序列:

CREATE SEQUENCE example_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

NOCACHE -- 不建缓冲区


最后再设置一个触发器
CREATE TRIGGER example_triger BEFORE

INSERT ON example FOR EACH ROW WHEN (new.id is null)--只有在id为空时,启动该触发器生成id号

begin

select example_sequence.nextval into: new.id from dual;

end;


最后插入数据测试一下:

insert into example(id, name) values(111,'李四');

发现提示出现 oracle触发器无效且未通过重新验证 的错误;

网上查询发现 有的可以执行有的不能执行  数据环境差异;Oracle菜鸟,留作以后解答;

后经上网搜索发现一简单粗暴的解决办法;如下

将触发器删掉;然后直接指定序列插入;

insert into example values(example_sequence.nextval,'李四');

change at 1.

对于使用java的JDBC连接数据库的时候再设计sql语句的时候将序列的名字写死在sql中即可;

如:sql = "insert into water values(example_sequence.nextval,?)";

pst.setString(1,"zhangsan");

OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: