我正在使用這個問題How to automatically generate unique id in sql server的答案來創建一個表的自定義ID。它完美的工作。
現在我有一個列,它包含的值如UID00000001
UID00000002
等。假設此列中的最後一個值爲UID00000003
。現在我想通過C#在我的一個.aspx
頁面中計算尚未插入的行的值。在這種情況下,UID00000004
。我怎樣才能達到這個價值? 任何幫助,將不勝感激。 謝謝。如何計算尚未被插入的行(自定義id)?
回答
您需要執行這個查詢得到這會爲表生成的下一個身份:
SELECT IDENT_CURRENT('table_name')+1;
對於您的情況下,將與下一個標識級聯其它一些信息,以便查詢會像這樣:
SELECT 'UID' + RIGHT('00000000' + CAST(IDENT_CURRENT('table_name')+1 AS VARCHAR(8)), 8)
當然,您需要編寫C#代碼以將該查詢發送到SQL Server。
話雖如此,請牢記這一點:當您從該調用中獲取值並保持該值時,如果在您持有該值時將記錄插入該表中,則值不再爲下一個值。
如果您在申請中插入記錄後需要相同的值,請參考this答案。
CodingYoshi請閱讀我提供鏈接問題的答案。此列不是自動增量列。 –
除此之外,我需要這個值只是爲了顯示的目的,我不會再發送這個值到SQL服務器。 –
@ElhamKohestani根據這個答案它是一個自動增量列(它是身份值和一些其他字符的組合)。 – CodingYoshi
如果不需要在數據庫級別生成這些標識符(例如其他一些進程在那裏插入記錄),則可以在應用程序中預先生成它們。類似以上內容:
class Generator
{
public static int UniqueId = 0;
public static int GetNextId()
{
return Interlocked.Increment(ref UniqueId);
}
}
然後,您的代碼可以預先分配這些標識符,並對這些字符串進行格式化。如果多個用戶訪問相同的功能,他們將收到其他標識符。但是,如果沒有(成功)執行保存操作,則這些標識符將丟失。
我不需要對這個值做任何事情。我只是爲了某些顯示目的而需要它。無論如何,感謝您發佈您的寶貴時間。 –
- 1. JQGrid插入的新行ID未定義?
- 2. Tableau插入自定義的小計行
- 3. 如何在自定義模板中插入自定義ID - CDT
- 4. 未找到自定義Gradle插件ID
- 5. 插入MySQL後未定義ID
- 6. 如何在自定義中插入和添加自定義行?
- 7. 如何計算自定義ID增長到無窮大
- 8. 休眠@ManyToOne未能properply插入,因爲FK ID尚未創建
- 9. Google表格 - 如何計算小計,包括未來的插入
- 10. 自定義的計算式
- 11. 自定義操作未被執行
- 12. WebSphera/ibm_security_logout尚未定義
- 13. JavaScript Global Varibale尚未定義
- 14. 代理類尚未定義
- 15. 插入行基於計算
- 16. 如何在尚未被空間包圍的短劃線之後插入空格?
- 17. 如何爲自定義方程製作輸入計算器?
- 18. Android - 自定義計算器?
- 19. Magento稅 - 自定義計算
- 20. 如何插入自定義表
- 21. Elastix - 如何插入自定義字段
- 22. 數據尚未被插入到數據庫中(使用SqlDataSource)
- 23. 如何自定義JSession ID
- 24. ReferenceError:插入未定義
- 25. 時尚自定義字體
- 26. 未定義函數的計算屬性餘燼插件
- 27. 使用jsPlumb拖動div時,其ID尚未從AngularJS綁定中插入
- 28. Haskell持久插入行(如果尚未在數據庫中)
- 29. UITableView - 用自定義單元插入行
- 30. TinyMCE 4「自定義插入行」按鈕
在行被實際保存後顯示這些值是否可以接受?除非您在應用程序中生成標識符,否則沒有人可以告訴您使用標識或序列進行保存時您會收到哪些ID。如果您確信只有您的應用程序在該表中執行插入,則會發生這種情況。 – Alexei
由於插入可能會失敗,因此無法預先計算該值,如果發生這種情況,您將得到錯誤的編號,或者某個其他進程可能會在計算時間和實際插入時間之間插入一條記錄。 –