Oracle之创建自增的ID
2016-02-29 17:17
549 查看
首先:先创建一个测试表;
然后自定义一个序列:
最后再设置一个触发器
最后插入数据测试一下:
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!
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!
相关文章推荐
- Oracle类型修改
- Oracle 11GR2 RAC添加节点
- Oracle大数据常见优化查询
- Oracle大数据常见优化查询
- IMP-00003: ORACLE error 3113 encountered ORA-03113: end-of-file on communication channel
- 关于oracle数据库误删表空间文件后无法登陆sqlplus的解决方法
- oracle数据泵EXPDP和IMPDP使用说明
- Oracle expdp/impdp 用法例子 详解 举例 例子 他的这篇文章没有办法写出来 要这么改
- Oracle 10g 到11g的数据迁移 导入导出 顺序步骤 expdp/impdp
- Oracle OS备份了解
- linux下oracle自动备份脚本
- 定制正确的oracle备份策略 0级备份
- 细谈 oracle备份的方法
- NEXTVAL 和 CURRVAL 运算符和oracle的sequence设置说明
- -- Oracle 常见故障及日常规划----
- oracle的分析函数over(Partition by...)
- dmp文件导入oracle
- oracle11g间隔分区简单应用
- Oracle主要服务解析
- [oracle] 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed