JSP+Oracle 主键自动增加的问题!郁闷!(100分)

  • 主题发起人 主题发起人 西北浪人
  • 开始时间 开始时间
西

西北浪人

Unregistered / Unconfirmed
GUEST, unregistred user!
我在看一个别人的程序,发现里面一个bug,有两个表,均有ID字段,且通过ID字段关联,其中表1 id是自动增加的,表2id不应该自动增加(原来的程序是自动增加的),否则将表2数据删除,两表关联就不正确了。现在想改过来,但试了很多办法均不行,不知道他是怎么实现自动增加的,哪位知道怎么回事,这里说不清我可以把表结构和模块、类代码发过去。
 
是不是有触发器?你将写表的脚本贴上来看看
 
使用了ORACLE的序列!
 
怎样完全清空表,使得再增加的数据从1开始!
 
看看表2的插入代码,可能也调用了序列器。
 
应该是一个用序列,一个用触发器吧
 
自己写代码,不要用自增字段就可以了 ~~~~
 
我来啦。。。。
不是触发器就是存储过程做的最大可能是在触发器中,你不但要看表2的也要看表1的

题外话:
如果你用的是INTERBASE数据库, 可以用 SET GEN_ID(生成器名字) XXX
XXX是你想设的数字
如果是 MYSQL 那么你直接将表全删后就它不自动从1开始了。
如果你手工INSERT一个100作为这个它的值, 下次增加时没对这个自动增量FIEDL赋值
系统会自动用101去插入的。
其它数据库你查一下帮助试试。
 
最好能把代码贴出来给大家看看。
 
呵呵,这个我做过,Oracle里用“序号生成器+触发器来实现”
刚好有当时的笔记代码,发给你吧
1、序号生成器
create Sequence SeqBbs increment by 1
start with 1
//SeqBbs为序号生成器名
2、查询Seq
select seqbbs.nextVAL from t_users
//t_users为表名
3、触发器
create or replace trigger TR_UserId
before insert on T_Users
for each row
declare
Uid number;
begin
select SeqBBS.nextval into Uid from dual;
:New.F_Id := Uid;
//注意这里F_ID为T_Users主键
end TR_UserId;
先执行1,再执行3
就可以了
 
后退
顶部