怎么在Oracle中加一个可以自动加一的字段A。
比如:
在先表中插入新的记录时,
如果原表中没有纪录,那么字段A为1,
如果存在那么取最大加1。
必须用Sequence么?
比如:
在先表中插入新的记录时,
如果原表中没有纪录,那么字段A为1,
如果存在那么取最大加1。
必须用Sequence么?
解决方案 »
- sql查询速度优化,急待牛人提建议!!!100分!
- 急救!![Err] ORA-01555 ORACLE恢复del的数据!
- OracleDBConsole 服务因 2 (0x2) 服务性错误而停止。请问一下如何解决!
- Oracle数据写入的问题
- 求教:ORACLE多表联合查询的高效方法
- Oracle查询结果生成XML
- 请问数据库或OS的用户数的购买
- 如何查看oracle中数据库名?
- 出错: shared memory realm does not exist!!!
- 各位大侠有没有制作ODBC安装盘的工具,现在安装软件要每次配置ODBC不是很方便
- 高级复制环境执行DDL的问题
- 用排序哈希簇来提升Oracle查询速度
minvalue 1
maxvalue 99999999999999999999
start with 1
increment by 1
cache 20
/
使用:
select sequence_modify_record.nextval into v_num from dual;或者
insert table_name(usernum,user_emp) values(sequence_modify_record.nextval,'username');
commit;
from table
具体方法如下:
create or replace function Func_caifan(no IN VARCHAR2)
return varchar2
is
seq_nextseq VARCHAR2(200) ;
seq_prefix VARCHAR2(240) ;
seq_seq VARCHAR2(240) ; CURSOR cur_caifan
IS
SELECT seq,
trim(to_char(to_number(SUBSTR(seq,3,12 ))+1,'0000000000')) AS nextseq,
prefix
FROM
t_seq_mst
WHERE
del_flg = '0'
AND
seqid=no ;
begin OPEN cur_caifan; LOOP
FETCH cur_caifan
INTO seq_seq,
seq_nextseq,
seq_prefix; --カーソルの存在を判断する
EXIT WHEN cur_caifan%NOTFOUND;
end loop;
CLOSE cur_caifan;
seq_seq := seq_prefix||seq_nextseq;
UPDATE t_seq_mst
SET seq = seq_seq
WHERE seqid = no; return(seq_seq);
end Func_caifan;
一致不明白cache有什么用,设置cache =20后 ,有时候sequence会一下子跳20,奇怪