【发布时间】:2015-03-06 08:55:48
【问题描述】:
我需要一些帮助来对已填充的字符串数据表进行排序。 因此,我有一个 COMP_ID,例如,
TC0001 TC0002 TC0003
因此,当用户输入新行时,它应该以 TC0004 等开头。 我刚刚开始使用 oracle,我不知道如何使用序列来解决这个问题。据我所知,序列仅适用于 int 数据类型。
【问题讨论】:
我需要一些帮助来对已填充的字符串数据表进行排序。 因此,我有一个 COMP_ID,例如,
TC0001 TC0002 TC0003
因此,当用户输入新行时,它应该以 TC0004 等开头。 我刚刚开始使用 oracle,我不知道如何使用序列来解决这个问题。据我所知,序列仅适用于 int 数据类型。
【问题讨论】:
你应该这样做:
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;
【讨论】:
000s 被序列中的数字替换,否则它将导致像 TC00010、@987654324 这样的值@, ... TC000100 等。因此,我建议创建最大值为 9999 的序列,并使用表达式 'TC' || TO_CHAR(yourtable_sequence.NEXTVAL,'fm0000') 设置列。