2012-03-15 44 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,數量和數量)