我现在oralce数据库里 有20多个表,需要实时的(2秒)每个表存入几十条记录,这样如果建立表的主键呢,开始我想用时间做主键,但如果在一秒内 存入几十条,那么这个是不行的。然后我用序列的方式 sequence  ,1 到 9999999999
然后在每个表里建立触发器,这样每个表每插入一行记录,就让序列递增一下。
但是我发现这种方法,每个表都有触发器,不是说触发器尽量不要用吗
我怕万一某一个触发器出问题了,那么与那个触发器关联的表就死了,就不能插入了
这样就麻烦了。所以想问问大家有什么别的好办法吗?!请详细说说

解决方案 »

  1.   

    不太明白,主键为 sequence,插入时就直接插入呗,和触发器有啥关系??
      

  2.   

    我感觉建sequence 与 Triggers还是比较有效的,我们现在大几十个表,都是这么实现的,还没发现有什么问题,建好后别动字段一般是没事的 
      

  3.   

    我认为只用sequence好,用trigger怕出问题,如果相关对象修改了,trigger就会失效。
    用时间作为主键,我认为to_char(sysdate,'YYYY-MM-DD HH24:MI:SSSSS')可以满足你的要求,
    只要多加几个S应该就可以了。
      

  4.   

    BEGIN
       IF :new.ID IS NULL or :new.ID=0 THEN
        select ADDID.nextval
        into nextid
        from sys.dual;
        :new.ID:=nextid;
      end if;
    END回1楼的朋友,我在触发器里是这么写的,如何不用触发器来弄呢,直接读 序列?!回5楼的朋友,2秒实时插入我是在高级语言里实现的。