2016-05-31 15 views
-2

データベース内に作成されたビューに情報を挿入しようとしていて、非常に一般的なエラーが発生しています。SQLをビューに挿入

1062 - 重複エントリ「0」キー「PRIMARY」の - 新しいエラーコード

 INSERT INTO eagle2 
      (hotelname, 
      hotelcity, 
      hotelpostcode) 
VALUES  ('EaglePalace', 
      'Sydney', 
      '2000') 

INSERT INTO eagle2 
      (hotelname, 
      hotelcity, 
      hotelpostcode) 
VALUES  ('EagleRegis', 
      'Perth', 
      '6000') 

別々と一緒に両方のこれらの両方が動作していない、と私はそのおそらくそう簡単で知っています私はすでにこれで2時間を無駄にしてしまった。

私はすでにeagle2と呼ばれていたビューを持っていますが、今は2つの新しい行を挿入したいだけです。

eagles2

+3

ビューに値を挿入することはできません。これは単なる仮想テーブルです。 – Karthikeyan

+0

これは私の卒業証書の一部であり、ユニットの1つです。ユニットは実際に間違っていますか? – Slappy

+0

ビューにデータを挿入することはできません。代わりに、ビューが構築されているテーブルにデータを挿入する必要があります。 – Patrick

答えて

2

あなたが使用しているSQLサーバー言うことはありません。すべてのサーバーがビュー経由でデータの更新をサポートするわけではありません。

可能なデータベースを使用している場合は、すべてのビューを更新できるわけではありません。それは、データベースがどのレコードを変更するのかを決定するかどうかによって異なります。

ので、このようなビュー:

CREATE VIEW test AS select a, b, c from Foo where filtercol=2 

が更新されますが加わり、複雑でできなかったなどと表示することでした - データベースはテーブルが変更必要ソースのレコード何かを動作することはできませんので。

EDIT:データベースを追加するのを忘れてしまいました。挿入/更新/削除操作の代わりに何をするかをデータベースに伝えるトリガを定義することができます(Postgresでは "代わりに"トリガが可能です)これをサポートする)

+0

私はphpmyadminを使用しています。申し訳ありませんが、私は選択肢があることを忘れています。そのビューは文字通り1つのテーブルから作成されましたが、元のテーブルに挿入しようとしても同じエラーが表示されます。 – Slappy

+0

これをサポートしていることがわかっているMySQLを使用しています。どのバージョンのMySQLを使用していますか? –

+0

5.0.12?おもう。数週間前の最新のもの、私はラップトップ上のローカルホストにもう一度ダウンロードしました。 – Slappy