网上讲说用SEQ序列就行那我有一百个表,就必须得建一百个SEQ,然后再建一百个触发器将序列和表的主键字段关联上吗??这样很麻烦啊,有没有简单点的办法,

解决方案 »

  1.   

    1 多表可以用一个序列
    2 一般不用触发器来写主键,用insert values(xxx.nextval,...)来写主键
      

  2.   

    建一个序列就够了呀
    --创建序列
    create sequence seq_name
    increment by 1
    start with 1
    maxvalue 999999999
    nocycle
    cache 10新增数据
    insert into table_name values(seq_name.nextval,...........)建一次可以永远使用,除非你把他删除.下一次使用时他不是从1开始增加,是接着上次增加的序列开始增加
      

  3.   

    "多表可以共用一个序列,但这样会中间断值"
    =======================================
    即使每个表一个sequence,也会断号
    而且sequence很大程度地影响了INSERT的速度
    当然,在不得不用sequence的时候,sequence是最好的选择
      

  4.   

    我也一直是建一个表,就建一个SEQ
      

  5.   

    我晕,,,看来大家基本是建一个表再建一个SEQ啊,,多个表共用一个SEQ也可行,不错的方案
      

  6.   

    我的习惯是:
    1,能用自然主键的就用自然主键;
    2,一个表对应一个SEQUENCE
    3,插入的时候不需要触发器,可以用.nextval。不过,你如果要考虑程序的兼容性,因为其他数据库不支持这个,比如SQL Server的自增字段是隐式插入的,那就用触发器来实现。
      

  7.   

    说实在的,一般来说,一个表总是有自然主键的
    不知道为什么,很多做开发的都喜欢用sequence
      

  8.   

    sequence或者GUID生成全球唯一主键