- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 SQL Server 2008 R2 Profiler 调试 ColdFusion 7 应用程序(由其他人开发)上的问题,该应用程序在 Windows 7 上运行,并以 SQL Server 2008 R2 作为后端。该应用程序最初使用 MS Access 2003 作为后端,后来转换为 SQL Server 2008 R2。探查器显示以下使用 SCOPE_IDENTITY() 的 SQL,但是当我使用搜索实用程序搜索应用程序根目录时,没有文件在其 SQL 查询中的任何位置使用 SCOPE_IDENTITY() 函数。该应用程序的 SQL Server 数据库没有任何存储过程、 View 、函数等。所有 SQL 查询都是 ColdFusion 文件中的嵌入查询。 Profiler 在哪里获取 SCOPE_IDENTITY() 函数:
declare @p1 int
set @p1=11
exec sp_prepexec @p1 output,N'@P1 datetimeoffset,@P2 varchar(8000),@P3 int,@P4 varchar(8000)',N'insert into ProductItems (item_date , item_description, item_type)
values (
@P1 ,
@P2 ,
@P3 ,
) select SCOPE_IDENTITY()','2015-10-19 00:00:00 +00:00','Test description',1
select @p1
更新虽然最初该应用程序是在CF 7中开发的,但是CF 7后来升级到了CF9,现在我正在具有CF 11的本地机器上调试它。我不知道当CF 7替换为CF时代码是否也升级了8,然后使用 CF 9。CFquery 似乎在分析器中生成上述 SQL 的样子。此外,表 ProductItems 确实有一个标识列,数据库没有使用任何触发器,并且 CFquery 标签没有使用结果属性:
<cfquery name="addProductItems" datasource="#dtsource#">
insert into Productitems (item_date,item_description,item_type)
values (
<cfqueryPARAM value = "#item_dat#" CFSQLType = "CF_SQL_TIMESTAMP" null="#item_dat eq '-1'#">,
<cfqueryPARAM value = "#item_description#" CFSQLType = "CF_SQL_VARCHAR">,
<cfqueryPARAM value = "#item_type#" CFSQLType = "CF_SQL_INTEGER">
)
</cfquery>
最佳答案
我的猜测是 CF 服务器会自动添加它。我知道您说过您正在使用 MX7,但是……回到 ColdFusion 8,引入了一项新功能,可以从简单的 INSERT 语句中检索生成的 ID。在 SQL Server 中,这是通过将 SELECT SCOPE_IDENTITY()
附加到 INSERT
查询来完成的。这在当时确实造成了一些问题。更多详情请参见:
注意:在以后的版本中,实现可能会发生变化。
如beloitdavisja mentioned in the comments ,查找具有 result
属性的 cfquery
标记。 Result
是一个包含有关所执行查询的详细信息的结构。在CF8中,生成的记录ID在IDENTITYCOL
键下返回。在更高版本中,它还包含与数据库无关的版本,GENERATEDKEY
。
关于sql-server - SQL Server Profiler 显示 SCOPE_IDENTITY(),而 ColdFusion 代码未在任何查询中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242714/
以下查询在事务中插入许多记录。我想获取新创建的增量标识符并在下一个 INSERT 中使用它陈述 对于单个记录,我可以使用如下 SELECT @new_emp_id= SCOPE_IDENTITY()
我有 PK,它是自增 key 。我需要将记录插入数据库,然后取回 PK 并在另一个插入中使用它。 但是我想在一笔交易中完成此操作。那可能吗。这个想法是,如果我必须做的任何更新/插入中出现问题,那么我可
好的,我有一个没有自然键的表,只有一个整数标识列作为它的主键。我想插入和检索标识值,但还要使用触发器来确保始终设置某些字段。最初,设计是使用而不是插入触发器,但这破坏了 scope_identity。
抱歉,如果这个问题很愚蠢,但我似乎找不到答案。刚开始使用 SQL。我正在阅读 Get the last inserted row ID (with SQL statement) 的答案,似乎 SCOP
浏览了一些答案,但似乎对我不起作用。 我需要返回一个表的 ID 字段,这样我就可以在程序的不同部分使用它,我试过使用 Convert.ToInt32(sqlComm.ExecuteScalar
我想在插入之前获取新的 id(Identity)。所以,使用这段代码: select SCOPE_IDENTITY() AS NewId from tblName 但是得到这个: 1- 空 2- 空
我有一个相当复杂的对象,包含嵌套的项目列表,每个项目都有自己的表格。 创建此对象时,出于性能原因,我想将它连同它的子对象及其所有后代一起插入到单个事务中。 我的表: Parent |Id| Has a
我创建了一个应该在一个中执行 2 个插入的存储过程 第一步,我想为每个插入创建一个新条目。 第二步我将从这个条目中获取创建的 Id 第三步我想从一个表中复制每个选择的多个条目并将它们插入到具有 Id
我有以下 SQL 代码用于将新记录插入我的数据库 DECLARE @CustomerID INT DECLARE @PropertyID INT BEGIN TRAN T1 INSERT IN
我一直在寻找高低问题的答案,并认为我将转向stackoverflow社区。由于以下错误,我一直在避免在SQL Server和nhibernate中使用类型标识ID字段字段:http://connect
我使用的是 SQL Server 2014。 我通过将所有物理地址列移动到专用地址表来对现有数据库进行非规范化,如下所示: 旧: Customers (CustomerId, AddressLine1
我有一个带有标识列的表,我想在 INSERT 之后获取其值。以下代码不使用参数,但运行良好: string query = "INSERT INTO aTable ([aColumn]) VALUES
当我尝试通过 SQL Server 获取插入数据库的最后一个 ID 时,它返回 __Page。这是我的代码: query = "INSERT INTO seekers(nam
我有一个存储过程,它首先将一些数据插入到临时表中,然后将一行插入到另一个表中。我在第二次插入后调用 Scope_Identity() 以获取新插入的记录 Identity。 如果第二次插入由于连接而没
我有一个表MyTable,我在那个表上有一个After trigger(On Insert)。 当我在 MyTable 上运行批量插入语句时,它会触发触发器以捕获插入的数据(即用于审计日志目的)。 我
我正在用 SQL server 写一个 SP ALTER PROCEDURE [dbo].[spAddUserBadge] AS BEGIN INSERT INTO dbo.SE_UserBa
我的存储过程是: ALTER PROCEDURE [dbo].[Insert_QuickLabDump] @Specimen_ID [varchar](50), @Client_Key
我正在尝试返回新创建行的 ID。我试过用 SCOPE_IDENTITY 来做,但它返回 3。我四处搜索,无法确定我做错了什么。 代码如下: " SelectCommand="SELEC
我遇到异常:“指定的转换无效”,这是代码 con.Open(); string insertQuery = @"Insert into Tender (Name, Name1, Name2) valu
我正在尝试执行一个简单的 INSERT 并返回标识(自动递增主键)。我试过了 cmd.CommandText = "INSERT INTO Prototype ( ParentID ) VALUES
我是一名优秀的程序员,十分优秀!