У меня такой код:
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_id from dba_xy.product
prod_name from dba_xy.product;
end loop;
конец;
Когда я запускаю его, oracle выдает следующее сообщение об ошибке:
prod_name from dba_xy.product;
*
ОШИБКА в строке 8: ORA-06550: строка 8, столбец 29: PL / SQL: ORA-00933: команда SQL не завершена должным образом ORA-06550: строка 3, столбец 2: PL / SQL: инструкция SQL игнорируется
Я пытаюсь связать существующие prod_id и prod_name с новыми данными, вставленными в таблицу отправки. Я установил prod_name в качестве уникального ключа в таблице продуктов и prod_id в качестве первичного ключа и установил оба ограничения в качестве ограничений внешнего ключа в таблице отправки. Мне нужно включить prod_name в таблицу отправки, чтобы читатели таблицы могли лучше понимать, какое prod_name нужно найти и т. Д., Вместо того, чтобы просто указывать prod_id, который не будет иметь для них никакого смысла. Но, возможно, я подумал, что мне не нужен prod_id в таблице отправки. Пожалуйста помоги.
После удаления столбца prod_id из таблицы отправки я изменил свой код:
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_name from dba_xy.product;
end loop;
конец; /
и появилось следующее сообщение об ошибке об ограничении уникальности: begin * ERROR в строке 1: ORA-00001: ограничение уникальности (DBA_XY.PROD_NAME_UC) нарушено ORA-06512: в строке 3