Oracle之创建自增的ID

来源:互联网 发布:淘宝口令单怎么做 编辑:程序博客网 时间:2024/04/25 10:11

首先:先创建一个测试表;

CREATE TABLE example(ID Number(4) ,NAME VARCHAR(25)<pre name="code" class="html">, PRIMARY KEY(ID)
);

然后自定义一个序列:

CREATE SEQUENCE example_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXVALUE -- 不设置最大值NOCYCLE -- 一直累加,不循环NOCACHE -- 不建缓冲区

最后再设置一个触发器
CREATE TRIGGER example_triger BEFOREINSERT ON example FOR EACH ROW WHEN (new.id is null)--只有在id为空时,启动该触发器生成id号beginselect 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!


0 0
原创粉丝点击