为啥 Oracle 中没有像 MySQL, MS SQLServer 那样有自动增长类型,而基本上采用序列来搞定,Oracle 这样做你认为有什么理由么?

解决方案 »

  1.   

    oracle 用的是sequence 可以给多个表用 更灵活
    自动增长列 只能指定一个具体的表
      

  2.   

    能否说的再深入一点,oracle的sequence,给多个表用又如何呢
    mysql的autoincrement,虽然只能给一个表用,但是我每个需要的表都设置一下不就解决了嘛能否再讲的切入要领一点
      

  3.   

    自增的缺点是indentity列不能被直接赋值,在做数据迁移的时候,无法保证迁移前后该列的数值完全一样
    而sequence则可以被手动赋值的,这样在数据维护的时候带来了很大的好处。
    还有如果我想多个表都用同一个自增长列indentity就不行了
      

  4.   

    oracle的sequence 一般人比较习惯
      

  5.   

    oracle 创建序列:
    CREATE SEQUENCE my_seq 
         INCREMENT BY 1   -- 每次加几个  
         START WITH 1     -- 从1开始计数  
         NOMAXVALUE       -- 不设置最大值  
         NOCYCLE          -- 一直累加,不循环  
         CACHE 10;  
    创键该用户下的所有表都可以使用此序列来生成主见:
    如:
       insert into emp values(my_seq.nextValue,'jay',120);
       insert into dept values(my_seq.nextValue,'jay',120);
    序列是一个数据库对象,如同表,索引,视图一样。
    用一个专门的数据库对象来管理自动增长的主键不是很方便吗?
    自己也可以建立一个主键表加上增长算法来实现同样的功能,项目中就有人这样做哦!