2016-05-30 42 views
0

我的應用程序允許用戶在另一個表中每週只輸入一次,每週一次。執行這個想法會導致常見的問題,我可能會在檢查另一個連接上的ifExists並提交兩條記錄後做出記錄。我無法樂觀地鎖定一條不存在的記錄,並希望避免對整個表格進行悲觀鎖定。在SQL Server表中實施每週一次的輸入

那麼這裏最好的解決方案是什麼?每週爲所有用戶創建記錄?

回答

1

創建第二個包含周的表(例如WeekId,StartDate,EndDate)。

然後在您的第一個表中創建兩個外鍵關係一個用戶表和第二個到周表。 然後添加一個唯一約束,以確保每週只有每位用戶獲得一條記錄。

ALTER TABLE dbo.UserWeeks 
    ADD CONSTRAINT uq_UserWeeks UNIQUE(UserId, WeekId); 

由於唯一約束,第二次插入將失敗。

+0

外鍵有什麼用途? – Lock

+0

它不一定是一個外鍵,但它必須唯一地表示有問題的一週,可能是一週開始的日期。我認爲這是數據標準化的好選擇 – benPearce

相關問題