【问题标题】:Increment A String in a column with oracle sequence使用 oracle 序列在列中增加字符串
【发布时间】:2015-03-06 08:55:48
【问题描述】:

我需要一些帮助来对已填充的字符串数据表进行排序。 因此,我有一个 COMP_ID,例如,

TC0001 TC0002 TC0003

因此,当用户输入新行时,它应该以 TC0004 等开头。 我刚刚开始使用 oracle,我不知道如何使用序列来解决这个问题。据我所知,序列仅适用于 int 数据类型。

【问题讨论】:

    标签: php sql oracle


    【解决方案1】:

    你应该这样做:

    CREATE SEQUENCE CREATE SEQUENCE yourtable_sequence
    START WITH 1
    INCREMENT BY 1
    NOCACHE
    NOCYCLE;
    
    CREATE OR REPLACE TRIGGER yourtable_trigger  
    BEFORE INSERT ON yourtable
    FOR EACH ROW
    
    
    BEGIN
      SELECT 'TC000' || to_char(yourtable_sequence.NEXTVAL)
      INTO   :new.COMP_ID
      FROM   dual;
    END;
    

    【讨论】:

    • 使用这样的序列是可以的,但我认为 OP 会期望 000s 被序列中的数字替换,否则它将导致像 TC00010、@987654324 这样的值@, ... TC000100 等。因此,我建议创建最大值为 9999 的序列,并使用表达式 'TC' || TO_CHAR(yourtable_sequence.NEXTVAL,'fm0000') 设置列。
    猜你喜欢
    • 2015-07-23
    • 2014-01-10
    • 2019-08-05
    • 1970-01-01
    • 2013-12-12
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多