我創建了一種表單,其中有兩種類型的條目可以插入數據,一種是註冊用戶,另一種是未註冊數據。同時點擊按鈕和插入重複條目的數據
當我在兩個不同的瀏覽器中打開同一URL
並填寫表格相同的數據,然後點擊提交這兩個瀏覽器在同一時間上的按鈕,然後在C#
代碼我使用的交易,以避免產生歧義,但在這種情況下這兩個數據被保存進入數據庫列。
我已經嘗試了很多東西,提交之前驗證檢查,但仍然沒有正面的反饋。
請問我該怎麼辦?
我創建了一種表單,其中有兩種類型的條目可以插入數據,一種是註冊用戶,另一種是未註冊數據。同時點擊按鈕和插入重複條目的數據
當我在兩個不同的瀏覽器中打開同一URL
並填寫表格相同的數據,然後點擊提交這兩個瀏覽器在同一時間上的按鈕,然後在C#
代碼我使用的交易,以避免產生歧義,但在這種情況下這兩個數據被保存進入數據庫列。
我已經嘗試了很多東西,提交之前驗證檢查,但仍然沒有正面的反饋。
請問我該怎麼辦?
在爲特定用戶插入數據時,您可以額外檢查該用戶是否已有數據。僅在沒有記錄時插入。
您需要將檢查和插入操作合併到同一事務中。否則,同時發生的兩次檢查將從數據庫中取回OK,然後兩者都進行更新,並且1次失敗。
我使用LINQ插入並更新 –
看看這個話題:http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent – Wolf5
即使更新代碼以在插入之前檢查值,在插入之前可能會發生另一個插入。如果您確實想要保證數據的完整性,則需要在數據庫中創建某些不允許衝突的值的約束條件。這通常是主鍵,但如果不是,則可以在不希望允許重複值的列上創建唯一約束。然後,您只需處理可能由重複值引發的異常。
爲什麼不在插入前驗證數據,無論它是否重複? –
是的,我需要檢查是否存在相同,那麼我不應該插入重複條目。 –