我有屬於各個用戶的項目表:如何保證表格值只在表格行的一個子集中唯一?
PROJECT_ID,owner_user_id,PROJECT_NAME
我不需要project_names是全局唯一的表,所以使得PROJECT_NAME唯一沒有幫助。我只想阻止用戶在INSERT或UPDATE上創建重複的project_names。
一旦INSERT/UPDATE,我只想檢查是否已經有一個project_name屬於特定的owner_user_id,並且如果它已經存在,則INSERT/UPDATE應該失敗。
我可以使用SELECT首先檢查用戶項目中是否存在project_name,然後只在select返回沒有結果時才執行INSERT/UPDATE。但是這是多線程的,另一個線程可以在執行SELECT之後但在INSERT/UPDATE之前立即插入相同的project_name。把這一切都放到一個交易中感覺就像是矯枉過正。是否有一個查詢可以執行此操作?
是owner_user_id和project_name之間的一個可能的關係嗎?我的意思是一個用戶可以有不同的project_name? – punit
@punit是的,正好 – jpeskin