2010-03-18 69 views
1

我打算使用Toxi方案存儲標記(如在Stackoverflow上的標記) 標記存儲在一個單獨的表中。標記和如何測試標記存在

create table tags 
(
    tagSeq int unsigned, 
    name varchar(255), 
    PRIMARY KEY (tagSeq), 
    UNIQUE INDEX (name) 
); 

在添加標籤的用例,多個併發線程會試圖檢查是否有特定標籤的存在;因此這將成爲爭論的焦點。如果標籤存在,線程只是拉出tagSeq,並在中間表中添加一行,並將其與被標記的項目鏈接起來。

我該如何設計這個如果存在使用tagSeq,如果不創建用例,使我有高併發性,同時保持數據完整性?例如,我應該使用什麼隔離級別?

我目前的解決方案是爲每個傳入線程執行INSERT。如果我得到一個UNIQUE KEY約束衝突,我只是讀回tagSeq。如果不是,我創建它。我在軌道上嗎?

+0

我會使用一個存儲過程,處理1062錯誤:http://www.devshed.com/c/a/MySQL/Error-Handling/ – 2010-03-18 15:23:14

回答