Coldfusion / sql查询以查找下一个ID [重复]

Posted

技术标签:

【中文标题】Coldfusion / sql查询以查找下一个ID [重复]【英文标题】:Coldfusion/sql query to find the Next ID [duplicate] 【发布时间】:2015-10-15 00:21:39 【问题描述】:

是否可以在不插入数据库表的情况下进行查询以找出下一个 ID 是什么?基本上只是调用数据库来查看下一个 ID 号是什么预填充到文本框中?考虑到多个用户可能同时使用它。该程序需要足够聪明才能知道该号码是否已被使用。我真的怀疑人们会在同一时间添加新记录,但我只是想看看在有趣的 sql 和 Coldfusion 世界中会发生什么。

【问题讨论】:

大多数 SQL 引擎都有一个称为自动增量的功能。每次插入新行时,使用此“标志”指定的列的值都会增加。因此,您根本不需要处理要插入的 ID。拥有自己的事务安全插入需要锁定/保留 ID。但是你为什么要实现一些 SQL 已经处理好的东西,对吧? (编辑):我真的怀疑.. 这没有考虑到 html 的无状态性和网络应用程序是多线程的事实。如果用户群较小,这可能不太可能,但仍然可能。没有办法以绝对确定的方式知道。要回答您的问题,这些选项是特定于数据库的。如果您进行搜索,一些选项是:***.com/questions/562578/… 和 ***.com/questions/6761403/… 就是说,我能问一下为什么(因为大多数数据库都会为您处理)? 由于已经有许多现有答案解释了各种 dbms 的选项,因此投票关闭作为重复项。 @DavidBrierton - 嗯,你的帖子不是很具体。您能否用您的 dbms 和版本更新您的问题,并简要说明您已经探索过哪些选项,以便人们不要重复您可能已经知道的内容? :-) 【参考方案1】:

这可以完成,但如何完成将取决于数据库系统。例如,在 SQL Server 中,以下查询将返回最后一个标识值:

SELECT IDENT_CURRENT('test_table_name') AS last_identity;

这可以使用 cfquery 标记从 ColdFusion 传递到 SQL Server:

<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>

【讨论】:

scope_identity() 在这里不是更安全吗? 可能!很难知道,因为问题是如此开放。

以上是关于Coldfusion / sql查询以查找下一个ID [重复]的主要内容,如果未能解决你的问题,请参考以下文章

两个表查询(SQL 和 ColdFusion)中的匹配值

Coldfusion Sql查询分组输出

循环复选框Coldfusion

Coldfusion / Lucee - 使用一个查询循环遍历3D数组以使用多个插入插入到数据库中

SQL 查询以查找从中选择记录的同一个表

SQL 查询以查找由字母分隔的重复项