centos7
centos7、 secureCRT
需求:在oracle的一张表中,满足一列自动增长的需要 解决方式:oracle 是利用序列来完成的(sequence) 语法 create sequence myseq start with 1 increment by 1 //代表一次增长几个 minvalue 1 maxvalue 99999999 cycle|nocycle //表示序列增加9999999后从1开始(不建议使用循环,会导致数据自增ID重复) cache|nocache //不缓存的意思 cache 10 表示一次产生10个号共你使用 使用cache可以提高效率,缺点可能会产生跳号不能修改start with,如果想改,只能删除,重新创建,启动。SQL> create sequence ceshi_seq start with 1 increment by 1 minvalue 1 maxvalue 9999999 nocycle nocache;Sequence created.
使用序列向表中插入数据:SQL> insert into classname (id,clname,clkecheng) values(ceshi_seq.nextval,'测试','yuyan');1 row created.查看已经插入的数据:由于表中原来有数据,所以可以看到 ID为1的有两条数据(因为没有定义ID唯一)
序列细节 1.可以为表中的列自动产生值 2.由用户创建数据库对象,并可由多个用户共享 system 使用choy的序列 问题 : 如果system使用choy的序列,那么system的数据是从什么值开始增长 choy 已经创建了两条数据 那么system再调用这个序列 则id值要从3 开始 3.一般用于主键或唯一列 4.可以使用序列名currval来查看当前序列值 select choy.currval from dual;1.nextval : 返回下一个可用的序列值。 通过序列名.nextval获得select choy.nextval from dual;
细节说明 一旦定义了序列,就可以使用currval,nextval currval 返回sequence的当前值 nextval 增加sequence的值,然后返回sequence的值 什么时候使用sequence 1.不包含子查询.snapshot view的select语句 1.insert 语句的子查询中 3.insert 语句的values中 4.update 语句的set中 如果想查看序列的当前值currval,必须先使用序列nextval值,否则会报错 删除序列 drop sequence 序列名;