oracle7.33中如何生成自动增加字段(id号)(100分)

  • 主题发起人 主题发起人 snowhawk
  • 开始时间 开始时间
S

snowhawk

Unregistered / Unconfirmed
GUEST, unregistred user!
oracle7.33中如何生成自动增加字段(id号)?
就象paradox中的autoinc字段,在Server端如何做,在Delphi这边如何做?
 
使用SEQUENCE,每次执行SELECT自动以步长递增。
 
创建SEQUENCE
创建基于你的基表的触发器,在每次插入时,将SEQUENCE.NEXTVAL 置为你的自动增加字段
 
小弟刚刚接触oracle(以前只用过Paradox与Interbase,只在InterBase中用过
触发器),在oracle中如何设置与使用就 @#$%^&*
希望各位兄弟能够给我讲详细一些,最好能够举例子,多谢多谢 !
 
小弟刚刚接触oracle(以前只用过Paradox与Interbase,只在InterBase中用过
触发器),在oracle中如何设置与使用就 @#$%^&*
希望各位兄弟能够给我讲详细一些,最好能够举例子,多谢多谢 !
(还拜托各位能给我推荐一本学习oracle的好书)
 
(1)create table Your_Table(
Hm Number unique,
Other Char(10));

(2)建序列号
CREATE SEQUENCE your_sequence
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
(2)建触发器
CREATE TRIGGER autoinc BEFORE INSERT ON your_table
FOR EACH ROW
DECLARE
Hm Integer;
BEGIN
select your_sequence.nextval into Hm from dual;
new_hm := hm;
END;
/
 
volan老兄,我按你的步骤操作后,在增加记录时,HM并没有自动增加。
并且引发错误信息如下:

数据库系统引擎错误:
ORA-04098:触发于'AUTOINC'无效且再确认失败

BTW:
建触发器过程中
select your_sequence.nextval into Hm from dual;
^^^^
中的dual是什么东东?我看不懂。
 
拜托snowhawk还是先买本书看看吧。
 
得胜,推荐一本好书吧。
 
得胜,推荐一本好书吧。
 
如果你侧重于编程,建议你买一本有关PL/SQL的手册,ORACLE7、8的都可以。如果主要进行管理,根据你的版本买管理员手册一类的书,我手头上有一本〈ORACLE开发人员指南(机械工业出版社)〉、〈ORACLE数据库使用大全(电子工业出版社)〉、〈PL/SQL(英文)〉,ORACLE功能强大,你不专心啃几个月书不可能掌握。
结束讨论吧。
 
dual为oracle的一张虚拟基表


select yuor_sequence.currval from dual ;

create trigger your_trg before insert on your_table
for each row
declare
hm integer;
begin
select your_sequence.nextval into hm from dual;
:new.bh := hm; //bh为你的自动增加字段
end;

好书,有<Oracle DBA 完全手册>,(很厚的一本,有600页左右)
 
别费劲了,Oracle本身就有自增字段,明天有时间我查一下告诉你
 
Hi,zhaoyipeng

Oracle本身真的有自增字段吗 ?
快、快告诉我吧,我已经等不及了,*_^。

 
ORACLE 用的不是 TRANSACT-SQL 而是所谓的 P/L SQL
反正我看了几个星期,学不会

ORACLE 不要说自增字段,你想的出的都有,不过先看它的说明书吧,号称有十公斤
漫漫玩,祝运气好
*_^
 
“号称有十公斤的说明书”
^^^^^^
十公斤,真的有这么恐怖吗?(不会是想打消我的积极性吧 ?*_^ )
 
Hi,volan
我按照你你第贴出来的tigger,今天又试了一下,可还是和以前的情况
一样,不能实现字段自增。
vloan老兄,你能在你的机器试一试好吗?(先谢了)

zhaoyipeng,Oracle本身自增字段的实现方法你查到了吗 ?
 
问题还没解决吗?拜托
 
1.如上建sequence

2.建表
create table testtable (
...
somefield number default your_sequence.nextval,
...
)

注:我没试过,想想可以,这比定义trigger方便,这样,在insert table
时, 忽略somefield,则插入表的somefield使用default值
 
多人接受答案了。
 

Similar threads

后退
顶部