2014-09-11 3 views
-1

У меня есть запрос на обновление данных в таблице; то есть полностью очистить все данные и обновить данные. Я заметил, что номер первичной колонки продолжает расти. Как перестроить этот столбец так, чтобы число начиналось с 1 при каждом обновлении данных.PL/SQL через APEX Обновить начальную колонку

+0

Как объявляется первичный столбец? Какой код вы используете для очистки и обновления данных? Есть ли триггеры? Последовательности? – Ben

+0

Если вы хотите сбросить последовательность, это дубликат [Необходимость сбросить значение последовательности в Oracle] (http://stackoverflow.com/q/10159840/458741). – Ben

+0

Спасибо, Бен. Изучение этой альтернативы. – Contactjohn

ответ

0

Если вы не находитесь на 12c, считая, что ваш первичный ключ заполняется через последовательность с помощью триггера. Что вы можете сделать, это:

  • Создать триггер с логикой, чтобы сбросить последовательность в нормальное состояние, т.е. после того, как каждый раз, когда вы очистить таблицу, то последовательность будет НАЧАТЬ С 1 и Инкримент 1. используя ALTER SEQUENCE.

  • Логическая часть последовательности, используя альтер заявление (спасибо Тому Кайта для этого):

create or replace 
procedure reset_sequence(p_seq in varchar2) 
is 
    l_value number; 
begin 
-- Select the next value of the sequence 

    execute immediate 
    'select ' || p_seq || 
    '.nextval from dual' INTO l_value; 

-- Set a negative increment for the sequence, 
-- with value = the current value of the sequence 

    execute immediate 
    'alter sequence ' || p_seq || 
    ' increment by -' || l_value || ' minvalue 0'; 

-- Select once from the sequence, to 
-- take its current value back to 0 

    execute immediate 
    'select ' || p_seq || 
    '.nextval from dual' INTO l_value; 

-- Set the increment back to 1 

    execute immediate 
    'alter sequence ' || p_seq || 
    ' increment by 1 minvalue 0'; 
end; 
/

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

+0

Я видел еще один альтернативой, которая заключается в падении и воссоздании последовательности. Поскольку моя программа не зависит от основного ключа, я могу позволить себе этот метод. Благодарю. Я продолжу изучение этой процедуры, чтобы настроить мою программу для последующего использования. – Contactjohn

+0

Хорошо, спасибо за отзыв. –

Смежные вопросы