代码之家  ›  专栏  ›  技术社区  ›  Joe R.

是否可以定义在更新行时自动递增的串行数据类型?

  •  1
  • Joe R.  · 技术社区  · 14 年前

    将新行添加到包含串行列的表中时,提交该行时,将为该列指定下一个最高的整数值。我是否可以定义一个串行数据类型,当用以前分配的串行值更新一行时,该数据类型将自动递增?在datablade?我目前正在整数列中使用以下功能 let intcol = select max(intcol) + 1 from table . 在我的应用程序中,当客户对pymt感兴趣时,上一个票号会更新为下一个可用的票号。

    3 回复  |  直到 10 年前
        1
  •  2
  •   RET    14 年前

    从你的其他一些问题来看,我猜你正在使用一个非常古老的Informix版本。

    相对较新的版本(10+,可能稍早)支持 SEQUENCE

    CREATE SEQUENCE mytable_version 
    INCREMENT BY 1 START WITH 1;
    

    然后在更新声明中:

    UPDATE mytable
    SET (payment, version) = (:pymt_amt, mytable_version.next_val)
    WHERE ...
    

    如果你的应用程序有太多不同的UPDATE语句或访问方法,你不能像你想要的那样控制它们,你可以考虑将版本更新作为UPDATE触发器的一部分。

        2
  •  2
  •   eyescream    14 年前

    AFTER UPDATE “扳机,可能和 sequence 以避免从表中计算max的开销。

    MySQL's auto increment 使用Oracle工具的功能您需要类似以下代码:

    create sequence mytable_seq start with 1 increment 1;
    
    create or replace trigger mytable_insert before insert 
    for each row
    begin
       select mytable_seq.nextval into :new.intcol from dual;
    end;
    
        3
  •  0
  •   dpbradley    14 年前

    对甲骨文来说,不是。

    通常使用预插入触发器和序列完成。