建立一个序列,给你的表添加一列,然后插入的同时加上seq.nextval
解决方案 »
- 求助:多条件关联删除
- 如何查看oracle的默认数据库
- 一行转多行多列
- 跪求高手解决高级复制中,所有的同步的表都不见了,表前增加MLOG$_和RUPD$_ 在线等候
- 我的ORACLE用户名密码怎么总自己变化?
- 如何快速删除数据库中所有表的数据而保留表结构?
- Oracle中的数据查询问题
- 就10分了,很急的job问题,谢谢各位,在线等
- 要从一个表中随机取十条记录和取前十条记录应该怎么取啊?
- 请问大家在写sql语句时是如何考虑性能问题的?
- 怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用OCI??怎么使用
- 为什么我的oracle数据表不能insert?
上面所说的sequence是一种,还可以用函数方式来虚拟自增长函数,即给列的default值用一个自定义函数表示。当然,这个函数并不好写,因为按照常规是不允许通过编译的。不过有一些办法可以绕过编译器。(在网上搜索一下,可以得到答案)
ORACLE中还是不要用MSSQL的思维来做,呵呵。
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDER;CREATE OR REPLACE TRIGGER USERADD
BEFORE INSERT ON MEMBERRG
FOR EACH ROW
BEGIN
SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
END;
create sequence seq_name
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
可以直接在插入时调用seq_name.nextval;
如insert into table_name(proid) values(seq_name.nextval);
2.创建触发器:
create or replace trigger trg_name
before insert on table_name
for each row
begin
select seq_name.nextval into :new.proid from dual;
end;
/
可实现自动将proid字段加1
插入时不用管它。
就是发生插入错误或者删除记录后,相应的记录编号就会被跳过
不能顺序标识记录