我在oracle apex中创建了一个序列,并将该序列链接到应用程序端的行。但是,在master-detail表单上,当我尝试添加新的表单记录时,它不会自动增加到新的Roster_ID。我可能犯了什么错误?请帮帮忙
下面是我的代码:
CREATE TABLE ROSTER(
Roster_ID NUMBER(5),
Working_Hours NUMBER(2),
Shift_Date DATE,
Shift_End_Date DATE,
Shift_ID NUMBER(5) REFERENCES Shift (Shift_ID),
Ward_ID NUMBER(5) REFERENCES WARD (Ward_ID),
Ward_Name VARCHAR2(25) REFERENCES WARD (Ward_Name),
CONSTRAINT PK_ROSTER PRIMARY KEY (Roster_ID),
CONSTRAINT CHECK_WORKING_HOURS CHECK (Working_Hours IN (6, 8, 12))
);
CREATE SEQUENCE Roster_seq START WITH 5 INCREMENT BY 1 NOCACHE NOCYCLE;
CREATE OR REPLACE TRIGGER Roster_T1
BEFORE
INSERT ON Roster
FOR EACH ROW
BEGIN
IF :NEW.Roster_ID is NULL THEN
select Roster_seq.nextval into :NEW.Roster_ID from SYS.DUAL;
END IF;
END;
/
COMMIT;
/
1条答案
按热度按时间kkih6yb81#
不需要触发器你可以设置
roster_id
的默认值为序列roster_seq
。除此之外,将
roster_id
设置为如果您运行一个页面并添加一个新行,Apex将允许您输入所需的所有数据,并将新行与下一个序列值沿着保存在
roster_id
列中。如果您想查看
roster_id
的值,那么创建一个新列,我们将其命名为roster_id_display
,并将其设置为ROSTER_ID
数据库列,其数据类型为number现在一切正常:您可以输入新行并查看ID,但您不能(无论如何也不应该)通过交互式网格更改它。