在每个块的oracle中创建一个序列

时间:2015-10-19 10:36:34

标签: oracle block sequence

我学会了如何通过以下方式创建一个简单的序列:

CREATE SEQUENCE wrk_fil_cde_seq
 START WITH     1
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

这将创建一个序列,每行增加1 ...但我需要不同的东西。我需要从Deb1到Deb2 seq_col的每一行应该是1,在出现Deb2后它应该增加1,如:

enter image description here

1 个答案:

答案 0 :(得分:2)

看起来你需要一个触发器。

例如:

"fnServerParams": function (aoData) {
    aoData.push( { "name": "select", "value": $("#slcFilter").val() } );      
},

但它不适用于更新。因为不清楚如何确定,该行在Deb1和Deb2之间......

如果你真的想使用序列,可以这样做:

CREATE OR REPLACE TRIGGER your_trigger
BEFORE INSERT ON your_table
FOR EACH ROW 
DECLARE
p_seq_id number;
BEGIN
SELECT nvl(max(seq_col) ,0)
INTO p_seq_id 
FROM your_table;

IF :NEW.val_col LIKE 'Deb%' THEN
:NEW.seq_col = p_seq_id + 1;
ELSE 
:NEW.seq_col = p_seq_id;
END IF;

END;