我昨天遇到了一些事情,花了我一段時間才弄清楚。在這段代碼中,服務器在正在更新的表中沒有記錄時掛起,並且不會給出超時錯誤或任何錯誤。使用第二個表中的記錄,代碼可以正常工作。當表格爲空時更新記錄 - CF掛起
<cfquery name="getSomething">
SELECT one, two
FROM some_table
WHERE conditions = 'my conditions'
</cfquery>
<cfloop query="getSomething">
<cfquery name="updateSomethingElse">
UPDATE other_table
SET three = 'my value'
WHERE four = #getSomething.one#
AND five = #getSomething.two#
</cfquery>
<!--- always run an insert --->
<cfquery name="insertSomething">
INSERT INTO other_table
(columns)
VALUES
(values)
</cfquery>
</cfloop>
我想這是一個CF問題,因爲運行在蟾蜍更新查詢確實在沒有記錄人們所期望的是什麼 - 什麼都沒有。
我先運行一個查詢得到的記錄數第二個表,只有運行更新查詢,如果記錄數大於0
這是使用Oracle 10,CF 9.02修好了與修補程序。
注意:select查詢返回2K/20K記錄; 更新和插入查詢都在第二個表中存在現有記錄時正確運行; 刪除更新查詢允許插入查詢運行,而不管第二個表中是否有記錄。
編輯:我要去探索移動更新和插入查詢循環如下建議。儘管如此,我仍然不認爲原始問題(爲什麼服務器掛在第二個表中沒有記錄的情況下)尚未得到解答。
_「隨着表中的記錄,該代碼工作正常。」 _ - 不,沒有關係。你錯過了cfloop查詢屬性的結尾報價。 如果沒有記錄,查詢循環將不會執行它的主體,所以必須比這裏顯示的更多。 –
這只是我輸入的內容來證明問題。實際的代碼是正確的 - 正如我所提到的,當表中有記錄時,它運行良好。此外,select查詢返回2K和20K之間的記錄,具體取決於int傳遞的參數。 – earachefl
提供_actual_代碼(僅對_only_敏感/重複信息進行過濾/剪切)總能讓事情變得更簡單和更清晰...... –