Я пытаюсь писать в две разные таблицы, обе в одной базе данных. В одной CFTRANSACTION с двумя CFQUERY первый CFQUERY будет правильно вставлен, а второй (тоже INSERT) просто пропущен. Ошибок не возникает, я вижу данные в первой таблице, а закомментирование первого INSERT позволит второму пройти по желанию.
Упрощенная версия моего кода:
<cffunction name="insertReport">
<cfset var strReturn="">
<cftransaction>
<cftry>
<cfquery name="updateTable1" datasource="DB1">
...
</cfquery>
<cfquery name="UpdateTable2" datasource="DB1">
...
</cfquery>
<cfcatch type="any">
<cfset errMsg = "#cfcatch.Message#">
</cfcatch>
</cftry>
<cfif trim(errMsg) eq ''>
<cftransaction action="commit">
<cfelse>
<cftransaction action="rollback">
<cfset strReturn = "Error: #errMsg#.">
</cfif>
</cftransaction>
<cfreturn strReturn>
</cffunction>
Это, вероятно, что-то очень простое, но я застрял. Любая помощь приветствуется.
insert
не произошло? Я не понимаю, как это могло бы произойти, если бы реальный код не содержал условную логику, например оператор if/else, который пропускает запрос при определенных условиях. Когда я не могу понять проблему, я начинаю устранение неполадок с ОЧЕНЬ ванильного тестового примера (без функций, try/catch, ....). Только cftransaction и два запроса. Если это сработает, начните добавлять остальную логику, пока все не сломается. - person SOS   schedule 07.02.2018