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大学有什么区别?