Вам нужно создать ПОСЛЕДОВАТЕЛЬНОСТЬ:
CREATE SEQUENCE your_seq
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
Затем вы используете:
INSERT INTO your_table
(pk_column, ...)
SELECT 'A' || your_seq.NEXTVAL ...
Если вы хотите, чтобы это буквенно-цифровое значение также увеличивалось, создайте другую последовательность и используйте функцию CHR :
SELECT CHR(alpha_seq.NEXTVAL) || your_seq.NEXTVAL ...
Но я рекомендую сделать этот столбец суррогатным ключом и использовать значение последовательности для фактического столбца первичного ключа:
INSERT INTO your_table
(pk_column, surrogate_key, ...)
SELECT your_seq.NEXTVAL,
'A' || your_seq.NEXTVAL ...
... потому что VARCHAR2
займет больше байтов, чем NUMBER
. Это будет иметь значение при объединении таблиц и позволит гибко изменять суррогатный ключ без ущерба для ссылочной целостности (IE: B1, B2, B3 ...).