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

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

【问题讨论】:

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

标签: sql coldfusion


【解决方案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() 在这里不是更安全吗?
  • 可能!很难知道,因为问题是如此开放。
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 2020-01-23
  • 2016-06-07
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2012-08-16
相关资源
最近更新 更多