2011-06-28 3 views
2

私はデータベースの初心者です、私は研究中に問題を満たしました。PhpMyAdminでテーブルを更新する質問

私は、phpMyAdminでテキストファイルをインポートして、データベースの1つのテーブルを更新しようとしています。 同じcustomer_IDを持つ行を使用する場合を除いて、すべてがうまく機能しました。

この行には「customer_ID」というフィールドがあり、これを主キーにすることはできません。データベースを作成するために使用される最初のテキストファイルには1つのcustomer_IDの複数の行が含まれているため、 id。

データベースにインポートテキストファイルを入力しましたが、エラーは発生しませんでした。ただし、更新テキストファイルを使用してデータベースを更新する必要があります。更新テキストファイル内のcustomer_idはすべてデータベースに既に存在しているため、この更新されたテキストファイルを使用してデータベースを更新すると、 PhpMyAdminの関数)、同じcustomer_IDを持つ既存の行は更新されませんが、同じcustomer_IDを持つ別の行が作成されます。これは正確には私が望むものではありません。

私はcustomer_idをプライマリキーにすることができれば、更新プロセスは完璧に機能しますが、データベースの入力プロセスでcustomer_idを複数の行に表示する必要があるため、 customer_idを主キーにします。

些細なことはご容赦ください。専門家が私に何か提案や関連する示度を与えることができますか?助けを前にありがとう。

+0

更新作業を行う前にすべての行を削除しますか?またはそれらを維持したいですか? – paulmorriss

+0

@paul、はい、私はそれらを保持する必要があります、それは顧客の詳細がいっぱいのデータベースです。毎月1日に最初のテキストファイルが作成されていて、今月中旬にはもっと小さなテキストファイルで更新する必要があります。 – Kevin

+0

あなたは「同じcustomer_IDの既存の行は更新されますが、同じcustomer_IDの別の行が作成されます」と言いますが、それは起こるとは思われません。挿入する場合は新しい行を取得し、更新する場合は新しい行を取得せずに古い行を変更します。 – paulmorriss

答えて

1

あなたのアップデートファイルは、形式のこの種を追従させる必要があります。

UPDATE table SET field1 = value, field2 = value WHERE customer_ID = existing value 

しかし、あなたが望むものはおそらくないすべての行を更新します同じ顧客IDを持つ複数の行を持っています。そのため、別のIDフィールドが必要です(レイが言うように)。一意であり、そのIDを使用して更新します。

...WHERE id = existing value 
1

これを行う最も簡単な方法は、追加の識別子フィールドを追加することです。 'customer_id'の横に 'id'というフィールドを追加し、 'id'をプライマリにします。

+0

これは、インポートテキストファイルを別のフィールドで拡張する必要があることを示唆していますか? – Kevin

+0

はい、インポートテキストファイルに「id」というフィールドを広告する必要があります。自動インクリメントにすると、データベースに追加されたすべての行が自動的にカウントされます。 – Ray

関連する問題