2015-10-15 58 views
0

是否可以在不插入數據庫表的情況下執行查詢以查明下一個ID是什麼?基本上只需調用數據庫來查看下一個ID號碼是否要預先填入文本框?考慮到多個用戶可能同時使用它。該程序需要足夠聰明才能知道該號碼是否已被使用。我真的懷疑人們會在相同的時間添加一條新記錄,但只是想看看sql和coldfusion這個有趣的世界裏有什麼可能。Coldfusion/sql查詢找到下一個ID

+0

大多數SQL引擎已經稱爲功能* *自動遞增**。每當插入新行時,用此「標誌」指定的列將增加它們的值。因此,您根本無需照顧身份證。擁有自己的事務安全插入需要鎖定/保留ID。但是,爲什麼你想要實現SQL已經處理的東西,對吧? – Alex

+0

(編輯):*我真的懷疑.. *這沒有考慮到HTML的無狀態和Web應用程序是多線程的事實。對於小用戶羣來說,這可能不太可能,但它仍然是*可能*。沒有辦法知道*絕對*確定性。要回答你的問題,這些選項是特定於數據庫的。如果你搜索,一些選項是:http://stackoverflow.com/questions/562578/how-do-you-tell-what-next-identity-column-will-be和http://stackoverflow.com/問題/ 6761403 /如何獲得下一個自動遞增的ID在MySQL中這就是說,我可以問爲什麼(因爲大多數數據庫爲你處理這個)? – Leigh

+0

由於已經有很多解釋各種dbms選項的現有答案,所以投票結束時會重複。 – Leigh

回答

1

這可以完成,但是如何完成取決於數據庫系統。例如,在SQL Server中下面的查詢將返回的最後一個標識值:

SELECT IDENT_CURRENT('test_table_name') AS last_identity; 

這可以使用cfquery標籤被傳遞到SQL Server的ColdFusion的:

<cfquery name="id_check" datasource="my_dsn"> 
    SELECT IDENT_CURRENT('test_table_name') AS last_identity; 
</cfquery> 
<output> 
<input name="id_check" value="#id_check.last_identity#"> 
</output> 
+1

不會scope_identity()更安全嗎? –

+1

可能!很難知道,因爲這些問題是如此開放。 –