Хотя то, что вы написали, вероятно, работает (если есть последовательность с именем MTJ_ID_SEQ
, у вас есть право выбирать из нее; то же самое относится и к таблице TALEND_JOB
), я бы сказал, что это не то, что выследует использовать.
И вот почему: я создам таблицу и последовательность.Таблица будет предварительно заполнена некоторыми идентификаторами (просто чтобы что-то туда вставить).
SQL> create sequence mtj_id_seq;
Sequence created.
SQL> create table talend_job as
2 select rownum id from dept;
Table created.
SQL> select * from talend_job;
ID
----------
1
2
3
4
OK;Пока 4 ряда.Теперь запустите ваш SELECT
:
SQL> select 'JASG'||to_char(mtj_id_seq.nextval) from talend_job;
'JASG'||TO_CHAR(MTJ_ID_SEQ.NEXTVAL)
--------------------------------------------
JASG1
JASG2
JASG3
JASG4
SQL> select 'JASG'||to_char(mtj_id_seq.nextval) from talend_job;
'JASG'||TO_CHAR(MTJ_ID_SEQ.NEXTVAL)
--------------------------------------------
JASG5
JASG6
JASG7
JASG8
SQL>
Видите?Вы получили не только значение 1 JASGx
, но и столько строк в таблице TALEND_JOB
.Если бы было миллион строк, вы бы также получили миллион JASGx
строк.
Следовательно, возможно вы намеревались вместо этого использовать таблицу DUAL
?Например,
SQL> select 'JASG'||to_char(mtj_id_seq.nextval) from dual;
'JASG'||TO_CHAR(MTJ_ID_SEQ.NEXTVAL)
--------------------------------------------
JASG9
SQL> select 'JASG'||to_char(mtj_id_seq.nextval) from dual;
'JASG'||TO_CHAR(MTJ_ID_SEQ.NEXTVAL)
--------------------------------------------
JASG10
SQL>
Видите?Только одно значение.
Кроме того, обратите внимание, что последовательности будут предоставлять уникальные значения, но вы не можете полагаться на то, что они будут без пробелов.
Как вы упомянули «как создать идентификатор столбца»- одним из вариантов является использование триггера.Вот пример:
SQL> create table talend_job (id varchar2(20), name varchar2(20)
Table created.
SQL> create or replace trigger trg_bi_tj
2 before insert on talend_job
3 for each row
4 begin
5 :new.id := 'JASG' || mtj_id_seq.nextval;
6 end;
7 /
Trigger created.
Давайте вставим несколько имен;Идентификаторы должны автоматически заполняться триггером:
SQL> insert into talend_job (name) values ('littlefoot');
1 row created.
SQL> insert into talend_job (name) values ('Ishak');
1 row created.
SQL> select * From talend_job;
ID NAME
-------------------- --------------------
JASG11 littlefoot
JASG12 Ishak
SQL>
OK тогда;теперь у вас есть больше информации - прочитайте и подумайте об этом.
Кстати, для чего используется тег «ошибки компилятора»?Вы написали какой-либо код, и это не удалось?Возможно, вы захотите поделиться этим с нами.