Я думаю, что я мог бы получить помощь от более опытных пользователей ...
У меня есть целочисленное имя поля в таблице, давайте назовем его SO_ID в таблице SO, и для каждой новой строки мне нужно вычислить новый SO_ID на основе следующих правил
1) SO_ID состоит из 6 букв, где первые 3 - это код города, а последние три - порядковый номер в этой области.
309001
309002
309003
2) поэтому следующая новая строка будет иметь SO_ID со значением
309004
3) если кто-то удаляет строку со значением SO_ID = 309002, то следующая новая строка должна перерабатывать это значение, поэтому следующая строка должна иметь SO_ID со значением
309002
Может ли кто-нибудь предоставить мне функцию SQL или PL / SQL (возможно, сразу триггер?), Которая будет возвращать следующий доступный SO_ID, который мне нужно использовать?
Я полагаю, я мог бы использовать ключевое слово rownum в моем sql, но следующее просто не работает должным образом
select max(so_id),max(rownum) from(
select (so_id),rownum,cast(substr(cast(so_id as varchar(6)),4,3) as int) from SO
where length(so_id)=6
and substr(cast(so_id as varchar(6)),1,3)='309'
and cast(substr(cast(so_id as varchar(6)),4,3) as int)=rownum
order by so_id
);
спасибо за вашу помощь!