在用ASP.NET和Oracle数据库做开发时,如何定义Oracle数据库中相关表的主键问题,请问大家都是如何定义的?
请问要实现一个字段(纯数字)的自动编号该如何实现?
能实现以好几位无规则的数字和字母混合编码来自动编号的字段吗?如何操作?

解决方案 »

  1.   

    请问要实现一个字段(纯数字)的自动编号该如何实现?
    -----------------------------------------------------------------------------
    用Sequence能实现以好几位无规则的数字和字母混合编码来自动编号的字段吗?如何操作?
    -----------------------------------------------------------------------------
    触发器/函数等
      

  2.   

    Eddie005(♂) №.零零伍 (♂) ( ) 信誉:121    Blog  2006-11-09 11:11:00  得分: 0  
     
     
       使用序列  
     
    Top  
     Eddie005(♂) №.零零伍 (♂) ( ) 信誉:121    Blog  2006-11-09 11:14:00  得分: 0  
     
     
       create table UserInfo  (
       UserID             NUMBER                           not null,
       NAME           VARCHAR2(100)                    not null,
       ENABLE_FLAG          NUMBER                           not null,
       constraint PK_UserInfo primary key (UserID)
    )
      
     
    Top  
     zhuyt0828(假扮的猛男) ( ) 信誉:100    Blog  2006-11-09 11:15:00  得分: 0  
     
     
       sequence
      
     
    Top  
     mmens(快乐中前行!) ( ) 信誉:100    Blog  2006-11-09 11:16:00  得分: 0  
     
     
       1 一般不在数据库端设主键,依靠程序管理主外键关系。将数据库端的关系解耦到程序段,更利于控制。
    2 使用自增类型
    3 自己编写生成编号函数(数据库函数)
      
     
    Top  
     Eddie005(♂) №.零零伍 (♂) ( ) 信誉:121    Blog  2006-11-09 11:17:00  得分: 0  
     
     
       上面创建了表UserInfo,并设置了UserID为主键;
    再创建一个序列:create sequence UserInfo_S
    然后,插入语句应该这样写:
    insert into userinfo (userid,name,enable_flag)value(userinfo_s.next,"张三",1)
      
     
    Top  
     jijl2001(jijl2001) ( ) 信誉:100    Blog  2006-11-09 11:17:00  得分: 0  
     
     
       一般用序列
      
     
    Top  
     Eddie005(♂) №.零零伍 (♂) ( ) 信誉:121    Blog  2006-11-09 11:20:00  得分: 0  
     
     
       在Oracle里的自增长编号问题,没有MS SqlServer方便,但是更灵活,因此实现楼主最后一个问题是比较简单的:
    insert into userinfo (userid,name,enable_flag)value('No.'+userinfo_s.next,"张三",1)
    而在MS SqlServer里,实现这样的编号就比较麻烦
      
     
    Top  
     shalen520(Love will keep us alive) ( ) 信誉:100    Blog  2006-11-09 11:26:00  得分: 0  
     
     
       实现以好几位无规则的数字和字母混合编码来自动编号 可以写一个function来做,编号规则修改起来也很方便
      
     
    Top  
     MoonQQ(阿康) ( ) 信誉:100    Blog  2006-11-09 11:45:00  得分: 0  
     
     
       用自增序列
    CREATE SEQUENCE emp_sequence 
    INCREMENT BY 1  -- 每次加几个 
    START WITH 1   -- 从1开始计数 
    NOMAXVALUE    -- 不设置最大值 
    NOCYCLE     -- 一直累加,不循环 
    CACHE 10;
      
     
    Top  
      

  3.   

    请问要实现一个字段(纯数字)的自动编号该如何实现?
    用Sequence能实现以好几位无规则的数字和字母混合编码来自动编号的字段吗?如何操作?
    用RowID啊!本身就是无序的字母数字混编。
      

  4.   

    你可以用rownum这个伪列,oracle中没有SQLServer中的那个自增列.