主键是用序列自增长的,如果先insert再update,那么主键会跳号,如何设计才比较好?

解决方案 »

  1.   

    查了下资料,好像可以用instead of
    我试试。
    为啥每次我发帖都没人回呢……
      

  2.   

    无法在表中创建instead of ……
      

  3.   

    简单得说,一张表,里面有个DR字段,新增数据dr均为0.
    当用户删除数据的时候,数据不直接删除,而是把dr改为1.
    这张表的主键是用序列自增长的,所以在before delete前新增一条原记录并将dr改成1的话,主键会变动。
    如果新增完后再修改主键,那么下一条新增的记录,主键会跳号(即主键不连续)。
    如何解决?
      

  4.   

    我也知道最好就是前台删除的时候直接update dr...
    可万事总有不如意的地方:有些表是有dr的,有些表是没有的……
    主键同上,有些表的主键无所谓,有些表必须要连号,涉及特殊需求
      

  5.   

    三步:
    假设你的表为A
    1、把你的表改名为A_1
    2、建议个view 名称为A
       create or replace A as select * from A_1;
       这样,所有对原表的操作都必须经过视图A来做了,因为视图A与原表同名,并且视图为“单一”视图
       所以 系统原来对表A的逻辑处理都不需要进行改动
    3、在视图A上建立 delete instead of 视图,捕捉删除操作,instead of为update dr=1的操作。
      

  6.   

    oracle里面只能在视图上创建instead of 触发器