greenteazsh
让我们携手一起努力......
posts - 26,  comments - 18,  trackbacks - 0

下面用一个例子来说明自增主键的创建:

1、建用户数据表
      drop table dectuser;
      create table dectuser(
           userid integer primary key,  /*主键,自动增加*/
           name varchar2(20),
           sex varchar2(2)
           );

2、创建自动增长序列
      drop sequence dectuser_tb_seq;
      create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999
               increment by 1
               start with 1;   /*步长为1*/
3、创建触发器
      create or replace trigger dectuser_tb_tri
          before insert on dectuser     /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
          for each row                       /*对每一行都检测是否触发*/
          begin                                  /*触发器开始*/
                 select dectuser_tb_seq.nextval into :new.userid from dual;   /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
          end;
   
          /                                        /*退出sqlplus行编辑*/
4、提交
      commit;
 
      现在就完成了自增主键的设定,搞定!可以检测一下。
      insert into dectuser(name,sex) values ('wang','女');

      提示“已创建一行”,表示成功。呵呵:D

      要注意的是主键数据类型如果为number,则触发器创建不了,还不明白这是为什么:(
posted on 2008-04-13 16:37 绿茶 阅读(16914) 评论(2)  编辑  收藏 所属分类: DataBase

FeedBack:
# re: oracle中主键自增
2011-10-10 09:21 | isbing
主键为number类型可以自增的,不知道你是怎么用的不能自增,我一直都用number类型做主键  回复  更多评论
  
# re: oracle中主键自增
2013-03-27 17:54 | 淡然的幽香
我们项目组也是用的number类型作为主键自增的,是可以实现自增,但是不知道为什么有的时候添加一条数据后数字自增了2,而不是1(我设置的是自增1)  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
在压力下共生:)
我们一起成长
QQ:176739920

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜