oracle 本身系统就有这个功能,自动会在表最后加上一个20位的ROWID字段,varchar型的。每条记录的RowID都不一样
解决方案 »
- Oracle11g sqlplus ORA-12560:TNS:Protocol adapter error。结贴马上给分!
- 求一简单SQL
- eclipse操作oracle出现异常
- SPOOL问题
- Oracle数据库移植时字符集问题的解决(转载)
- 储存的数据量挺大时,该选择什么数据类型?
- T-Sql解释 - 急
- 在线等:win2000server上重装oracle,为什么在注册表里有些项删除不掉
- 想要得到时间一(datetime1)到时间二(datetime2)还有多少分钟,该怎么写
- 请教sqlplus里的一些命令在哪儿可以找到
- 求存储过程
- [求助]表空间为何FREE EXTENTS TOO LOW?
当插入的时候会自动触发将ID加一。
create or replace trigger auto_increase_id
before insert on test
for each row
declare
next_id number;
begin
select seq_test.nextval
into next_id
from dual;
:new.id:=next_id;
end;
insert into mytable (name,id) values("myname",sq.nextval);
在插入的时候
例如:insert into tablename (id,name) values(0,'name');
把插序列的地方写个0就可以了。免得每次插入是写xxx.nextval这句话太麻烦。
给个例子吧
INCREMENT BY 100
START WITH 1
MAXVALUE 9900
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER则建立了一个系列,LOCATIONS_SEQ是系列名,NOCYCLE 表示序列在达到最小值或最大值后将不再生成其他值。NOCACHE 表示序列值在被请求之前不会进行分配;可使用预分配机制来改善性能。NOORDER 表示在生成编号时,不能保证按照请求编号的顺序返回这些编号。
minvalue 1 maxvalue 999999999999
start with 1
increment by 1
cache 20;
应该能看明白吧
可结合nextval(下一值))和currval(当前值)使用。
但是不保证sequence具有连续性,因为调用一次nextval,该序列就会自动加increment
newId nummber;
begin
select sequence.nextval() into newid from dual;
New.id:=newid;
end;/