我知道oralce自动编号这个字段需要建立一个序列,然后每次在insert的时候需要调用这个字段
create sequence SQID minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1insert into operator_op(operatorid,operatorname,password_pa,groupingid) values(SQID.NEXTVAL,'mmm','234','1')那么有没有什么办法在insert的时候不调用这个序列而使数据库自动编号呢?就好像sql server那样,我知道用触发器可以做到,但是在不方便用触发器的时候呢?先建一个序列:
CREATE sequence seq_for_insert
minvalue 1
start with 1
increment by 1
nocache;再建一个trigger:
CREATE or replace trigger Trig_for_insert
before insert on TableName
for each row
BEGIN
select seq_for_insert.nextval into :new.ID from dual;
END;就是说有没有通用一点的办法,我记得好像字段有个什么默认值,可不可以在默认值里写上我的序列而使它自动编号呢?还有一个问题,建一个表就需要一个序列,(如果上一个表的序列是100,那么下一个表再调用的时候就是101了)怎么能做到一个序列对应好多表呢?请高手赐教了,小弟不胜感激~~
create sequence SQID minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1insert into operator_op(operatorid,operatorname,password_pa,groupingid) values(SQID.NEXTVAL,'mmm','234','1')那么有没有什么办法在insert的时候不调用这个序列而使数据库自动编号呢?就好像sql server那样,我知道用触发器可以做到,但是在不方便用触发器的时候呢?先建一个序列:
CREATE sequence seq_for_insert
minvalue 1
start with 1
increment by 1
nocache;再建一个trigger:
CREATE or replace trigger Trig_for_insert
before insert on TableName
for each row
BEGIN
select seq_for_insert.nextval into :new.ID from dual;
END;就是说有没有通用一点的办法,我记得好像字段有个什么默认值,可不可以在默认值里写上我的序列而使它自动编号呢?还有一个问题,建一个表就需要一个序列,(如果上一个表的序列是100,那么下一个表再调用的时候就是101了)怎么能做到一个序列对应好多表呢?请高手赐教了,小弟不胜感激~~
解决方案 »
- SQL语句求指点!!
- oracle 11g的备份文件能不能通过imp命令导入到10g的数据库中?
- 关于oracle的自定义type的问题
- 菜鸟请教一个ebs forms开发的问题
- oracle数据库导出数据后再导入字符串长度不对
- 请教各位oracle的DBA朋友,你们平时都做什么工作呢/
- 求SQL语句,高手请进`````
- 初学者oracle,安装最后net8配置时hostname填什么?
- 如何统计表每天写入的数据量(千万级数据量)
- 打开oracle数据库报ora-01092;ora00704;ora00600错误
- 求一个存储过程解决方案
- 请教 insert /*+append */ table nologging selec * from table_other 这种方式下数据库事务的控制
insert into operator_op(operatorid,operatorname,password_pa,groupingid) values(SQID.NEXTVAL,'mmm','234','1')
这样调用的,请问是我调用的方式问题还是在什么地方有错误?
它为什么会记录了上一张表的自动编号内容?
select soid.nextval from dual;每运行一次soid的值就加一至于:有没有什么办法在insert的时候不调用这个序列而使数据库自动编号呢?就好像sql server那样,大可不必深究,意义不大。用序列就好了