У меня есть следующий код:
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;
конец;
/
и появилось следующее сообщение об ошибке об уникальном ограничении:
начать
*
ОШИБКА в строке 1:
ORA-00001: уникальное ограничение (DBA_XY.PROD_NAME_UC) нарушено
ORA-06512: в строке 3