Было бы полезно, чтобы опубликовать выборку данных, прежде чем запустить заявление (всего лишь пример, из курс) и нужные данные после запуска вашего заявления.
Похоже, что вы ищете что-то вроде
INSERT INTO report(rpt_id, extension)
SELECT rpt_id, 'RTF'
FROM report
WHERE extension != 'RTF'
Если первичный ключ является фактически составной ограничение на комбинации rpt_id
и extension
, и ваша цель состоит в том, чтобы принять вашу таблицу N отчетов каждый с расширение TXT
и создание N новых строк с тем же rpt_id
и расширением `RTF ', это сработает.
SQL> create table report(
2 rpt_id number,
3 extension varchar2(3),
4 constraint extension_pk primary key(rpt_id, extension)
5 );
Table created.
SQL> insert into report values(1, 'TXT');
1 row created.
SQL> insert into report values(2, 'TXT');
1 row created.
SQL> insert into report values(3, 'TXT');
1 row created.
SQL> insert into report values(4, 'TXT');
1 row created.
SQL> insert into report values(5, 'TXT');
1 row created.
SQL> select * from report;
RPT_ID EXT
---------- ---
1 TXT
2 TXT
3 TXT
4 TXT
5 TXT
SQL> insert into report(rpt_id, extension)
2 select rpt_id, 'RTF'
3 from report
4 where extension != 'RTF';
5 rows created.
SQL> select * from report;
RPT_ID EXT
---------- ---
1 RTF
1 TXT
2 RTF
2 TXT
3 RTF
3 TXT
4 RTF
4 TXT
5 RTF
5 TXT
10 rows selected.
На основании ошибки вы получаете, это, конечно, кажется, что первичный ключ не определен на сочетании rpt_id
и extension
.
Привет, благодарю вас за ответ. Я пробовал выше, но получаю ошибку «уникальное ограничение ограничений (extension_pk)». Достаточно ли данных проб? rpt_id = r00001, r00002, r00003, r00004, r00005 extension (все из них) = 'TXT' – cloudcalculus
@racer - И что вы хотите, чтобы конечный результат находился в таблице? Если вы начинаете с 5 строк, вы хотите завершить 10 строк? Если это так, то, основываясь на ошибке, я предполагаю, что «RPT_ID» является основным ключом таблицы, означающим, что у вас не может быть двух строк: одна с расширением RTF, а другая с расширением TXT. Но, похоже, именно об этом вы и просили. –
Да, это я хочу, но как это работает, так это то, что Первичный ключ - это пара rpt_id и расширения. – cloudcalculus