5

我正在尝试使用多重插入语法获取我正在插入的行的生成键(或 identitycol)。

<cfquery>
        CREATE TABLE TempPerson
            (
            PersonID INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
            LastName varchar(20),
            FirstName varchar(20)
            );
</cfquery>

<cfquery result="qrResult">
    INSERT INTO TempPerson( lastName, firstName )
    VALUES( 'Smith', 'Michael' ), ('Jones','Ricky')
</cfquery>

<cfdump var="#qrResult#">

我在 CF10 和 Railo 4.2 中结合 SQL Server 和 MySQL 运行了它。

带有 SQL Server 的 CF10 - 未返回 GeneratedKey。只有 recordCount 变量

RecordCount = 2

CF10 与 MySQL - 将标识列作为列表获取,但记录计数错误

GeneratedKey = 1,2
RecordCount = 1

带有 SQL Server 的 Railo 4.2 - 仅获取最后一个标识列

GeneratedKey = 2
RecordCount = 2

Railo 4.2 with MySQL - 将标识列作为列表获取,以及正确的记录计数

GeneratedKey = 1,2
RecordCount = 2

所以看起来这 4 个排列没有一致性。但我最紧迫的问题是是否有办法从运行 CF10 的 SQL Server 获取生成的密钥。在那儿?

4

1 回答 1

2

使用 sql 输出

<cfquery name="qrResult">
  INSERT INTO TempPerson( lastName, firstName )
  OUTPUT Inserted.PersonID
  VALUES( 'Smith', 'Michael' ), ('Jones','Ricky') 
</cfquery>

然后它可以用作常规数据

于 2015-08-08T05:25:47.930 回答