CFQuery从多个插入到SQL Server获取GeneratedKey

时间:2015-08-07 17:37:25

标签: tsql coldfusion railo lucee

我正在尝试使用多重插入语法获取我插入的行的生成密钥(或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运行了这个。

CF10与SQL Server - 没有返回GeneratedKey。只有recordCount变量

RecordCount = 2

CF10与MySQL - 获取标识列作为列表,但错误的recordCount

GeneratedKey = 1,2
RecordCount = 1

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

GeneratedKey = 2
RecordCount = 2

带有MySQL的Railo 4.2 - 将标识列作为列表,并使用正确的recordCount

GeneratedKey = 1,2
RecordCount = 2

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

1 个答案:

答案 0 :(得分:2)

使用sql输出

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

然后可以将其用作常规数据