пункт сессии не изменяется при использовании lov в первичном ключе - PullRequest
1 голос
/ 28 мая 2019

Я внедряю интерактивную сетку для выполнения операций DML над таблицей.

она объединила первичный ключ из двух столбцов. Один столбец первичного ключа отображается только и ссылается на основную таблицу и другой столбец первичного ключа, который мне нужен.иметь любовь, чтобы выбрать значение.LOV - это динамическое значение lov, отображаемое и возвращаемое значение которого выбирается из другой таблицы.

Вставки в порядке, но значение элемента состояния сеанса установлено для одной строки, и все операции выполняются в той же строке независимо от того, какая строка выбрана.

образец можно посмотреть здесь https://apex.oracle.com/pls/apex/f?p=128616:2:1964277347439::NO:::

имя основной таблицы: имя таблицы сведений о образце: sample_child

первичный ключ в дочернем примере: идентификатор и имя pop lov isреализовано в NAME LOV значения выбираются из таблицы: Sample_uncle LOV display: ID ||'-' ||NAME LOV return: ID

вы можете попытаться обновить столбец blabla таблицы sample_child, чтобы увидеть проблему.

Я не уверен, каким образом я могу дать вам доступ к просмотру реализации.

Я уже перепробовал все возможные варианты

1 Ответ

0 голосов
/ 28 мая 2019

Это связано с вашими первичными ключами, таблица подробностей, кажется, не имеет правильных ключей, поэтому она всегда пыталась обновить первую запись, и я думаю, именно поэтому каждая строка помечается при загрузке таблицы .

Первичные ключи также раздражают, когда отказываются быть пустыми, как вы можете видеть, если вы вставляете новую строку, средний столбец (который представляет собой PK) заполняется 't1001'.

Поскольку вы имеете дело с простыми таблицами (а не с целой кучей соединенных таблиц), я всегда считаю, что лучше использовать ROWID в качестве PK. Поэтому установите ROWID как PK для основной таблицы и ROWID для таблицы подробностей. И пусть таблица подробностей будет иметь главную таблицу в качестве главной таблицы, а затем щелкните первый столбец таблицы подробностей и установите для него главный столбец. И я также лично всегда скрываю связанный столбец.

Я бы посоветовал вам использовать ROWID всякий раз, когда это возможно, поскольку с ним намного проще работать, это означает, что вам может потребоваться настроить проверку, чтобы предотвратить добавление дублирующихся значений для вашего фактического PK, но так как PK находится в лежащей в основе таблицы, они не могут войти в нее в любом случае (но если у вас есть проверка, ошибка будет намного красивее), в то время как, если столбец - PK, APEX по умолчанию предотвратит дублирование.

Надеюсь, это поможет

...