2012-03-15 35 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 CD并购买“Holy of Houses”,我应该删除ALBUMS中现有的所有记录,并在artistId = 1处插入新记录作为“更新”的方式?我担心的是可能会耗尽AUTO_INCREMENT主键ID,尽管我承认我怀疑我脑海中会看到如此多的流量以至于无符号的INT无法处理,并且比实现更容易我目前复杂的想法(对于我想添加的n新记录,请查找m中的第一个m中不匹配的现有记录,更新这些记录,并删除剩余的m - n现在无关的记录,这至少需要初步的如果我将更新基于“Led Zeppelin”),子查询将获得AID。

i.1。如果我想添加“HOTH”但删除“IV”?我是否应该删除两个现有记录并重新添加它们?

ii。如果我只是想纠正一个错字,如cdId = 2

回答

0

也许这个article让你改变主意,使用GUID代替主键的auto_increment。

0

I.就我个人而言,如果我可以帮助它,我永远不会删除行。考虑添加数量字段以存储所述相册的库存数量。

您不太可能用完自动增量,但如果您有疑问......请使用bigint。你永远不会卖这么多专辑。

I.1再次,删除这样的行是不好的做法。如果你有一个数量字段,增加一个,减少另一个。

二,纠正错字?如“UPDATE ALBUMS SET title ='Led Zeppelin ZOSO'WHERE cdId = 2”?

0

我会保留ALBUMS作为每个艺术家制作的所有专辑的列表,并制作表OWNAGE,其中将会有您拥有的专辑的cdId(或用户ID和用户ID,用户ID,数量和数量)