Oracle Apex - столбец идентификатора не увеличивается на основе установленной последовательности, а скорее до «t1000»

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

Значения txxx являются «временным ключом» в клиентской модели sode, пока ничего не сохраняется в базе данных.

Koen Lostrie 30.04.2023 11:10
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет необходимости в триггере; вы могли бы установить значение по умолчанию для roster_id на последовательность roster_seq.

Кроме того, установите roster_id как

  • скрытый столбец (чтобы его не было видно)
  • основной ключ
  • ценность защищена

Если вы затем запустите страницу и добавите новую строку, Apex позволит вам ввести все необходимые данные и сохранить новые строки вместе со следующими значениями последовательности в столбце roster_id.


Если вы хотите увидеть значение roster_id, создайте новый столбец, назовите его roster_id_display и установите для него значение

  • отображать только
  • его источником является столбец базы данных с именем ROSTER_ID, тип данных которого является числом
  • установите для его свойства только запрос значение yes

Теперь все работает: вы можете вводить новые строки и видеть идентификаторы, но вы не можете (да и не должны) менять их через Interactive Grid.

Другие вопросы по теме