2015-10-15 101 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

可能!很难知道,因为这些问题是如此开放。 –