...エラーを取得していないが、何も挿入されませんコース)とあなたのステートメントを実行した後の希望のデータ。
あなたは
INSERT INTO report(rpt_id, extension)
SELECT rpt_id, 'RTF'
FROM report
WHERE extension != 'RTF'
のようなものを探しているように、主キーが実際にrpt_id
とextension
の組み合わせで合成制約で、あなたの目標はNのあなたのテーブルを取ることであることをそれぞれが報告された場合ですねTXT
の拡張子と同じrpt_id
と拡張子が「RTF」のN個の新しい行を作成すると、これは機能します。あなたが取得しているエラーに基づいて
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拡張子(すべて)= 'TXT' – cloudcalculus
@racer - 最終結果をテーブルに入れたいですか? 5行から始める場合、10行で終了しますか?もしそうであれば、エラーに基づいて、私は 'RPT_ID'がテーブルの主キーであることを推測しています。つまり、2つの行を持つことはできません。つまり、RTFの拡張子とTXTの拡張子を持ちます。しかし、あなたが最初に求めていたように聞こえます。 –
はい、そうですが、どのように動作するかは、主キーがrpt_idと拡張子のペアであることです。 – cloudcalculus