现在要实现自动增量字段我看了论坛中的帖子,基本都是按如下处理:先建一个序列,然后再建一个触发器或者插入时调用nextval。那是不是每一个表都要建一个不同序列和触发器呢?如果是的话,那这么多序列和触发器是不是占用了数据库的很多资源,从而导致数据操作(比如大批量插入)较慢并进一步影响整个数据库系统的性能呢?本人是oracle的初学者,还请各位大虾不吝指点迷津!

解决方案 »

  1.   

    建议不要用触发器去实现这个功能,可以在插入数据的时候,调用NEXTVAL,这样基本对系统性能没什么影响。
    个人理解!
      

  2.   

    不用触发器,直接使用nextval就可以了,不会占用什么资源的
      

  3.   

    To l2g32003(T2-X):
    以前用SQL Server已经习惯了每个表都设置一个自动增量字段您所说的多个表使用同一个序列我试过了,可是在表A里插入两条,ID分别是1、2,然后再向表B里插入两条,ID却是3、4了
      

  4.   

    To skystar99047(天星):你所说的断号是因为删除数据造成的?
      

  5.   

    在表A里插入两条,ID分别是1、2,然后再向表B里插入两条,ID却是3、4了
    --------------------
    问题是:你需要什么?
    如果是唯一的序号,这已经满足了要求。如果你想还要保证连续,即使每个表用一个SEQ,除非你不对数据进行删除,否则.......你还是不能使用SEQ.
      

  6.   

    一个sequence用在多个表,不可行。
    序列不占用物理空间。
      

  7.   

    为什么一个sequence用在多个表不可行?
      

  8.   

    是呀,为什么一个sequence用在多个表不可行?
    没有要求连续啊