我有两个不同的CF11应用程序,两个应用程序具有两个不同的数据源,每个数据源在同一个Oracle 12g数据库上都有自己的后端架构。在一个数据源dsA中,当我使用CFQUERY插入新记录时,结果结构包含GENERATEDKEY值。在数据源dsB中,当我运行完全相同的代码时,结果结构中没有GENERATEDKEY值。

这是我正在运行的测试代码...

<cftry>
    <cfset ds = "dsA"/>

    <cfquery name="insertTest" datasource="#ds#" result="testResult">
        INSERT INTO categories(cat_name)
        VALUES ('testing')
    </cfquery>

    <cfdump var="#testResult#" label="#ds#">

    <cfcatch>
        <cfdump var="#cfcatch#" label="#ds#"><cfabort>
    </cfcatch>
</cftry>


将数据源设置为dsA时,得到此输出。注意GENERATEDKEY和ROWID值。

oracle - 我的CFQUERY结果结构中缺少GENERATEDKEY值-LMLPHP

当我将数据源设置为dsB时,将得到此输出,没有GENERATEDKEY和ROWID。

oracle - 我的CFQUERY结果结构中缺少GENERATEDKEY值-LMLPHP

据我所知,两个Oracle模式都是以相同的方式设置的,并且两个数据源的配置都相同。有谁知道什么可能导致一个查询返回GENERATEDKEY而另一个查询不返回?我正在拔头发试图寻找原因。

在此先感谢您的任何建议。

最佳答案

我和你有同样的问题。 GENERATEDKEY <cfdump>中缺少struck。我再次检查了表,结果发现我忘记将id字段设置为Primary KeyAuto Increment。我改变了表,可以再次得到我的GENERATEDKEY

08-07 05:14