最近刚使用oracle,不清楚oracle的id设计怎么比较合适,如果我使用序列的话,每一张表都要设计一个序列,感觉不合适吧,求助各位高手支招!!!

解决方案 »

  1.   

    这个要根据你的业务吧,主键也可以由应用生成
    每张表一个序列也并非不可,之后命名有规律,比如SQ_TABNAME,也未尝不可,还有,也可以多张表公用一个序列的
      

  2.   

    Orace没有SQL Server那样的自增序列。
    我用ORACLE 10年了,都是自己对每个表单独建立一个 SEQUENCES 序列,然后再建一个触发器TRIGGERS
    从不省懒。CREATE SEQUENCE SEQ_S_MENU
      START WITH 1
      MAXVALUE 99999999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      ORDER;CREATE OR REPLACE TRIGGER tri_s_menu
      before insert ON S_MENU for each row
    declare
      nextid number;
    begin
      IF :new.menu_id IS NULL or :new.menu_id = '' THEN
        select SEQ_S_MENU.nextval into nextid from dual;
        :new.menu_id := nextid;
      end if;
    end tri_s_menu;
    /这样针对每个表 成对 建立后,就跟SQL Server的自增序列差不多了。
      

  3.   

    如果要保持唯一性的话,不如使用sys_guid()好了,产生唯一编码。