Oracle: последовательность MySequence.currval еще не определяется на этой сессии

Ваш блочный код выглядит хорошо.

Возможно, проблема связана с пользовательским типом записи. Когда вы регистрируете его, вы должны убедиться, что он поддерживает настраиваемые поля:

register_post_type(
  'post-type',
  [
    // options...
    'supports' => [
      // ...
      'custom-fields',
    ],
  ]
);

Этот последний шаг гарантирует, что ваш пользовательский тип записи предоставляет мета-свойство из REST API, который Гутенберг использует для просмотреть / обновить данные.

(взято из https://github.com/WordPress/gutenberg/issues/5622#issuecomment-375362438 )

37
задан Uwe Keim 7 October 2014 в 13:06
поделиться

4 ответа

mysequence.CURRVAL возвращает последнее значение, которое было получено из последовательности mysequence в сеансе , и, следовательно, не определено, пока вы не получите значение с помощью mysequence.NEXTVAL в хотя бы раз в сессии. Цель CURRVAL - позволить вам использовать значение последовательности более одного раза в вашем коде, например,

insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);

insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);

Если CURRVAL только что вернул последнее значение, полученное из последовательности в любой сессии , то оно будет бесполезным в код выше, и на самом деле может привести к повреждению данных!

49
ответ дан 27 November 2019 в 04:20
поделиться

Оказывается, вы не можете использовать CURRVAL, пока не используете NEXTVAL хотя бы один раз в сеансе.

25
ответ дан 27 November 2019 в 04:20
поделиться

Даг,

Реальный вопрос в том, зачем вам нужен currval, если вы не использовали nextval в своей сессии? Вы можете посмотреть на столбец LAST_NUMBER представления USER / ALL / DBA_SEQUENCES, но подумайте о проблемах параллелизма, когда начнете его использовать.

С уважением, Роб.

3
ответ дан 27 November 2019 в 04:20
поделиться

используйте это

select sequence_name, 
   to_char(min_value) min_value,
   to_char(max_value) max_value, 
   increment_by,
   cycle_flag, 
   order_flag, 
   cache_size, 
   to_char(Last_number) last_number
from user_sequences
where sequence_name='MYSEQUENCE'
14
ответ дан 27 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: