У меня есть таблица Лицо содержит поля personName, personId и без указания первичного я добавил некоторые значения в таблицу. Значения в таблице Person являютсяПоследовательность Oracle не генерирует
('muni',1)
('Ganesh',1)
мне нужно добавить первичный ключ, как PersonId и изменить столбец как генерироваться автоматически. Таким образом, я пытался сформировать последовательность по следующему запросу для генерации триггера
declare
id number;
begin
select max(rownum)+1 into id from Person;
execute immediate 'create sequence personseq start with '||to_char(id);
end;
Если я выполнить приведенный выше запрос, когда значения в таблице, то выполнить правильно, но когда у меня есть пустая таблица, означает, что в таблице нет записи, тогда указанный выше запрос не генерирует последовательность.
Я попробовал также заявление.
declare
id number;
begin
select max(rownum)+1 into id from Person;
if (id=null) then
execute immediate 'create sequence personseq start with '||to_char(1);
else
execute immediate 'create sequence personseq start with '||to_char(id);
end if;
end;
Система говорит об ошибке не есть ORA01722
, который обозначает число я даю недопустимый номер. Но я не знаю, где ошибка?
Любая помощь очень ценится.
я уже читал эту концепцию в моей школе день, но я действительно забыть о NVL. Спасибо, что напомнили. – MGPJ
Можете ли вы рассказать мне, почему это утверждение If не работает – MGPJ
@muniganesh, проверить обновленный ответ –