1

私はplsqlが初めてで、このコマンドは何かを台無しにしています:

insert into coffee_tea_join_table 
select coffee_id, 16 
from coffee_tea_join_table 
where tea_id = 6;

これは

「原因: java.sql.SQLException: ORA-00001: 一意制約違反」エラー。

coffee_tea_join_table には、coffee_id と tea_id の 2 つの列しかありません。

ステートメントは、選択元と同じテーブルから何かを再度挿入しようとしているようです。対応する tea_id = 6 の coffee_id テーブルを探していると思いますが、なぜそこに静的な値「16」があるのでしょうか? 「16」の欄がない…

tea_id = 6 の coffee_id が見つかった場合、それを同じテーブルに再度挿入するのはなぜ意味があるのでしょうか? 多分それが制約に違反した理由ですか?

4

2 に答える 2

0

テーブルcoffee_tea_join_tableに2つの列coffee_idとtea_idがあり、テーブルにこれら2つのテーブルの結合固有制約があると仮定することから始めます。SQLは、tea_id=16およびcofee_idの新しいレコードをtea_id=6のレコードと同じように作成しています。このエラーは、tea_id=16およびcofee_id=同じcofee_id値のレコードがすでに存在するために発生します。 tea_id=6のレコードとして。

これが役に立たない場合は、テーブルの一意の制約を含むテーブル定義を掘り下げる必要があります。

于 2012-09-29T15:05:45.413 に答える
0

まず、クエリによって抽出されたレコードの数を確認した後、テーブルの一意のインデックスと主キーを調べることをお勧めします。私はあなたが1つのrecを得ることを願っています。多い場合 - トリガーについて検討します。それらのいくつかはあなたの16を上書きするかもしれません(たとえば、間違ったシーケンスから)。いずれにせよ、トリガーを含むテーブルの ddl を提供してください。

于 2012-09-28T18:44:35.327 に答える