Я создал последовательность в вершине оракула и связал последовательность со строкой в конце приложения. Однако в форме 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;
/


Нет необходимости в триггере; вы могли бы установить значение по умолчанию для roster_id на последовательность roster_seq.
Кроме того, установите roster_id как
Если вы затем запустите страницу и добавите новую строку, Apex позволит вам ввести все необходимые данные и сохранить новые строки вместе со следующими значениями последовательности в столбце roster_id.
Если вы хотите увидеть значение roster_id, создайте новый столбец, назовите его roster_id_display и установите для него значение
ROSTER_ID, тип данных которого является числомТеперь все работает: вы можете вводить новые строки и видеть идентификаторы, но вы не можете (да и не должны) менять их через Interactive Grid.
Значения txxx являются «временным ключом» в клиентской модели sode, пока ничего не сохраняется в базе данных.