2012-02-15 14 views
0

テーブルにフィールドを挿入する必要があります。表:別個ではありませんか?

CREATE TABLE RADAR(
    ctfoto VARCHAR2(5), 
    pkradar NUMBER(3,0), 
    sradar VARCHAR2(3), 
    limitvelctera NUMBER(3,0), 
    limitvelradar NUMBER(3,0), 
    CONSTRAINT radar_pk PRIMARY KEY(ctfoto, pkradar, sradar) 
); 

挿入操作:

INSERT INTO RADAR(ctfoto, pkradar, sradar, limitvelctera, limitvelradar) 
SELECT distinct carretera_foto, pto_km_radar, sentido_radar, limit_vel_ctera, limit_vel_radar FROM gotcha 

エラー:

ORA-00001: unique constraint (USER4704.RADAR_PK) violated 

助けてください。

答えて

3

DISTINCTは、選択している列全体に適用されます。すべての確率で

は、あなたが他の二つの列( limit_vel_cteralimit_vel_radar)の一方または両方に同じ carretera_fotopto_km_radar、および sentido_radar値が異なる値を持つ GOTCHAの行を持っています。 SELECTDISTINCTは、少なくとも1つの値が異なるが、 RADARテーブルの主キー制約が最初の3つの列が同一である行を拒否するため、いずれの行も削除できません。

+0

固定!!!テーブルレーダーの他の2つの値はユニークです(各レーダーには最高の速度がありますので、すべてをプライマリーキーとして使用します)。 – Nausikaa

3

フィールドcarretera_foto, pto_km_radar, sentido_radarに同じ値を持つgotchaに複数のレコードが含まれている可能性があります。

DISTINCTは、レコード全体が繰り返されないことを意味します。

+0

はい、そうです。繰り返し記録を破棄するために区別されていないか? – Nausikaa

+0

そして、私は繰り返された値を破棄し、ただ一つを取る必要があります。それ、どうやったら出来るの? – Nausikaa

+0

それは別の質問です:)真剣に、あなたは新しい質問をする必要があります。そのとき、同じcarretera_foto、pto_km_radar、sentido_radarで複数のレコードがある場合、limit_vel_cteraとlimit_vel_radarのどの値を考慮すべきかを明記してください。 –

関連する問題