使用java向oracle数据库中添加记录时,有一个id字段是自动增长的,该怎么向数据库中

如题所述

Oracle  使用  序列号 + 触发器   实现自增的例子如下:


-- 这个是测试的序列号
SQL> CREATE SEQUENCE test_sequence2
  2    increment by 1    -- 每次递增1
  3    start with 1       -- 从1开始
  4    nomaxvalue      -- 没有最大值
  5    minvalue 1       -- 最小值=1
  6    NOCYCLE;      -- 不循环

Sequence created.

-- 这个是测试的表
SQL> CREATE TABLE test_create_tab2 (
  2    id   INT,
  3    val  VARCHAR(10),
  4    PRIMARY KEY (id)
  5  );

Table created.


-- 这个是测试的触发器
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
  2    BEFORE INSERT ON test_create_tab2
  3  FOR EACH ROW
  4  BEGIN
  5    SELECT test_sequence2.nextval INTO :new.id  FROM dual;
  6  END;
  7  /

Trigger created.


-- 下面是测试插入的处理

SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');

1 row created.

SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');

1 row created.

SQL> SELECT * FROM test_create_tab2;

        ID VAL
---------- --------------------
         1 NO id
         2 id no use

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-10
id自动增长,程序里直接赋值成null即可追问

但是怎么触发过程让他自动增长呢

追答

你用的什么方式?纯jdbc还是其他??

追问

mvc方式的,纯jdbc

追答

如果是这样就不行了。。。
首先oracle没有自动增长键,但是提供了sequence;
有3种方案:1.创建sequence; 使用select "sequence名".nextVal from dual for update 查找下一个值,然后为你的程序的sql的id赋值,然后插入;
2. 自己创建一个字段实现sequence,操作和1一样;
3.维护一个字段,实现一个缓存id

本回答被提问者采纳
第2个回答  2013-09-10
创建一个sequence
第3个回答  2013-09-10
可以在数据库中建序列squence作为id追问

我知道这样的方法,我是说在添加记录的时候,怎样调用squence序列,自动增长

追答

insert into 表 (id,name) values(squence+1,"") 就这个意思吧

相似回答