当前位置:数据库 > Oracle >>

oracle 函数 问题

假设 我建了一个序列 1开始的 增长是1 ids 现在有 1个表 有 1个这个序列的 字段 还有其他的。 如果先增加了 一条数据 然后再删掉。。 那 序列下次使用不是不是1了吗。。 要怎么知道 序列的值。。。 可不可以用在decode()中。。。。。
补充:select decode(max(Id),null,(select ids.currval from dual),max(Id)) id from users
这样提示此处不允许使用序号 要什么办法才能达到想要的效果呢?
追问:select squ.currval from dual 这个是可以了 那如果说decode()中要用可以用吗?? 显示此处不允许序号。。。select max(ids) from table 标识符 无效
select 序列名字.nextval from dual;  可以是可以 但是每次用这个就要增加 那增加速度是不是太快了 有什么方法不增加
答案:序列跟你删除数据没关系,它是多少还是多少,把1删除了,后面也不会再出现1,除非修改序列
序列名称为squ
select squ.currval from dual;--当前序列值
select squ.nextval from dual;---下一个序列值
其他:你删除了一条数据之后序列还是按照原定的值增长的,你可以看nextval来看序列的下一个值。 select max(ids) from table

或者 select 序列名字.nextval from dual; 确实不是1了,楼上的说得对 先删除最后一条在增加不会有问题。但是如果是你有ID1 2 3这3条记录,但是你把ID = 2删除了。
那麼下条增加的记录就会是ID=  4 select  序列名 nextnvl from dual; 

上一个:请问Oracle里sysaux里的“aux”指什么?
下一个:厦门ORACLE授权的培训中心跟ORACLE大学有什么区别?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,