我想请问下,oracle的错误代码,比如ORA-00001是不是在每个版本的数据库中都是恒定不变的呢, 我是想用这些东西来加入到程序中判断是否违反约束,这样做好不好 ,如果不好有没有更好的办法,当然我知道是可以自己写一个方法来判定,就是将那个字段全部读出来,看有没有包含新的要插入的值,但是这样做太消耗资源了。

解决方案 »

  1.   

    你是说做数据的唯一性约束是吧?一般来说在程序级别就应该保证插入的数据是有唯一键的,如果判断异常以后再修改,效率会不会比较低?
    还有就是,你用SELECT COUNT(*)是不是等于0就能判断是不是新值,其实也不用全部字段读入再判断啊
      

  2.   


    确实没必要全部读出来,先前没想周全,但是这样也是要有一次数据库操作,那么这样select一次和insert一次去等错误哪个效率高些呢,因为如果没违反约束的话,就可以省去了select,违法的情况是小概率,但是数据量可就比较大了
      

  3.   

    所以我觉得比较好的办法是保证你insert的时候的key是唯一的,比如你可以在数据库里面建一个单独的计数表,然后每当要insert一条数据时,计数表就自动插入一条新记录,然后返回计数表的数据条数,用这个条数作为key,这样基本就能保证要插入的key是唯一的了
      

  4.   


    那不就是sequence,我不是要用这个字段做key呢,就是一个普通字段要唯一性