【发布时间】:2018-05-29 17:56:12
【问题描述】:
我在为表中的每一行创建递增触发器时遇到问题。我需要的是计算依赖于其中一列的行。例如:
table
column1|column2
1 | 1
1 | 2
2 | 1
1 | 3
3 | 1
2 | 2
我已经创建了序列:
CREATE SEQUENCE inc_seq
MINVALUE 1
START WITH 1
INCREMENT BY 1;
并触发:
CREATE OR REPLACE TRIGGER inc_on_insert
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
SELECT inc_seq.nextval
INTO :new.column2
FROM dual;
END;
我现在得到的是递增的值,但每一行都会继续递增,并且不会重置。我不知道如何在 column1 的每个不同值上创建从 1 开始的语句。
编辑:
CREATE TABLE moves (
move_id NUMBER,
game_id NOT NULL
REFERENCES games ( game_id )
ON DELETE CASCADE,
move_number NUMBER NOT NULL,
stages_count NUMBER DEFAULT 1,
CONSTRAINT move_pk PRIMARY KEY ( move_id ),
CONSTRAINT moves_const_1 UNIQUE ( game_id,
move_number,
stages_count )
);
【问题讨论】: