2012-03-15 11 views
0

未熟な用語と方法論的な粗さを前もって謝罪します。MySQL - テーブルを更新する方法

のは、私はそうのようなカップルのテーブルがあるとしましょう:

ARTISTS 
artistId | artistName 
     1 | Led Zeppelin 
     2 | Pink Floyd 


ALBUMS 
cdId | artistId | title 
    1 |  1 | Physical Graffiti 
    2 |  1 | Led Zeppelin IV 
    3 |  2 | Wish U Were Here 

私はタイトル、私が持っている実際のテーブルにかかわらず、(夫婦の状況の下でアルバムのテーブルを更新するための柔軟な方法を把握しようとしています実際はtitle_idは別のテーブルに格納されているIDに固定されています)。

i。私がLZの2枚のCDを売って "Houses of the Holy"を購入した場合、ALBUMS内の既存のレコードはすべてartistId = 1で削除し、新しいものを「更新」の方法として挿入しますか?ここでの懸念は、AUTO_INCREMENTプライマリキーIDが不足する可能性があることです。ただし、私が心に留めていることは、無署名INTが処理できないほど多くのトラフィックを処理することになり、私の現在の入り組んだアイデア(n新しいレコードを追加したい場合は一致しない既存のレコードのうち最初にnを探して、それらのレコードを更新し、残りのm - nを削除します。私が "Led Zeppelin"のアップデートをベースにしている場合、AIDを取得するサブクエリ)。

i.1。 「HOTH」を追加して「IV」を削除したい場合はどうすればよいですか?既存のレコードを両方とも削除して、それを新たに両方追加する必要がありますか?

ii。 cdId = 2のように、入力ミスを修正したいだけの場合はどうすればよいですか?

答えて

0

多分このarticleは、あなたの気が変わり、主キーのauto_incrementの代わりにGUIDを使用します。

0

私は個人的に、行を削除できません。数量フィールドを追加して、前記アルバムの在庫数を保存することを検討してください。

自動インクリメントが不足している可能性は非常に低いですが、疑問がある場合はbigintを使用してください。あなたはそのアルバムを売ることは決してありません。

I.1再び、このような行を削除することは悪いことです。数量欄がある場合は1、増分を減らします。

II。入力ミスを修正しますか? "UPDATE ALBUMS SET title = 'Led Zeppelin ZOSO' where cdId = 2"のように?

0

ALBUMSを各アーティストが作ったすべてのアルバムのリストとして保管し、自分が所有するアルバムのcdId(またはユーザーIDとcdId ID、ユーザーID、CDIdおよび数量)がある場所にテーブルOWNAGEを作成します

関連する問題