如何在oracle中创建自动增长的字段呀?

xuxiangbin 2003-09-29 03:36:33
我在oracle里创建了一个表比如
create table tbname( id number ,color varchar(20) …………
我想让id字段自动增长,在插入记录时不用理他,怎么做呀?望高手指点
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangw1978 2003-10-10
  • 打赏
  • 举报
回复
我在Oracle DBA中首先创建了一个序列,然后创建触发器,触发器主体为:
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
BEGIN
SELECT 序列名.NEXTVAL INTO :new.列名 FROM dual;
END T_A_MemberShipID;
为什么说无效的触发器类型?谢谢指点!
pengdali 2003-10-05
  • 打赏
  • 举报
回复
第一步:创建SEQUENCE
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;

第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
CREATE OR REPLACE TRIGGER 名
BEFORE INSERT ON 表
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
BEGIN
SELECT s_country_id.NEXTVAL INTO :new.列名 FROM dual;
END T_A_MemberShipID;
boy002 2003-10-05
  • 打赏
  • 举报
回复
名:trigger name任意写
表:针对哪个table进行trigger
列名:自动增长字段
zhangw1978 2003-10-05
  • 打赏
  • 举报
回复
请教第二步中“名”是什么?“表”是什么?“列名”是否就是s_country_id?
funnyball 2003-10-04
  • 打赏
  • 举报
回复
Up
wranger11 2003-09-29
  • 打赏
  • 举报
回复
可以使用sequence和trigger:
create sequence seq_id increment by 1 start with 1


create trigger tr_id before insert on tabname fro each
begin
select seq_id.nexval into :new.id from dual;
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧