Попытка обновить таблицу MySQL с ColdFusion MX 7 - PullRequest
1 голос
/ 22 марта 2012

Я пытался обновить таблицу в MySQL 5.0 с Coldfusion MX 7. Но запрос только обновляет / добавляет первые записи и не обновляет / добавляет другие 60 000 записей.

<cfquery name="count" datasource="voyager">
SELECT 
        PATRON.PATRON_ID, 
        PATRON.HISTORICAL_CHARGES, 
        PATRON.HISTORICAL_BOOKINGS, 
        PATRON.HISTORICAL_DISTRIBUTIONS, 
        PATRON.HISTORICAL_SHORT_LOANS, 
        PATRON.HISTORICAL_CHARGES_UB, 
        PATRON.HISTORICAL_REQUESTS_UB
FROM PATRON
</cfquery>


<cfquery name="update" datasource="patrons">
    <cfoutput>
    REPLACE INTO patrondailyusecounttotals (PATRON_ID, HISTORICAL_CHARGES)
    VALUES ('#count.PATRON_ID#', '#count.HISTORICAL_CHARGES#')
    </cfoutput>
</cfquery>

1 Ответ

1 голос
/ 22 марта 2012

Вам нужно будет использовать цикл:

<cfquery name="count" datasource="voyager">
  SELECT 
    PATRON.PATRON_ID, 
    PATRON.HISTORICAL_CHARGES, 
    PATRON.HISTORICAL_BOOKINGS, 
    PATRON.HISTORICAL_DISTRIBUTIONS, 
    PATRON.HISTORICAL_SHORT_LOANS, 
    PATRON.HISTORICAL_CHARGES_UB, 
    PATRON.HISTORICAL_REQUESTS_UB
  FROM 
    PATRON
</cfquery>

<cfloop query="count">
  <cfquery name="update" datasource="patrons">
    REPLACE INTO patrondailyusecounttotals (PATRON_ID, HISTORICAL_CHARGES)
    VALUES (
      <cfqueryparam value="#PATRON_ID#" cfsqltype="CF_SQL_VARCHAR">, 
      <cfqueryparam value="#HISTORICAL_CHARGES#" cfsqltype="CF_SQL_VARCHAR">
    )
  </cfoutput>
</cfloop>

Обратите внимание, что использование <cfqueryparam> является рекомендуемым подходом здесь. Это значительно ускорит «внутренний запрос», поскольку после каждой итерации цикла после первой на сервер передаются только значения параметров (вместо того, чтобы каждый раз передавать полный код SQL).


EDIT

Первоначальная версия ответа рекомендовала следующее, но, очевидно, этого недостаточно в ситуации с отдельными серверами баз данных.

<cfquery name="update" datasource="patrons">
  REPLACE INTO 
     patrondailyusecounttotals (PATRON.PATRON_ID, HISTORICAL_CHARGES)
  SELECT 
     PATRON_ID, HISTORICAL_CHARGES
  FROM 
     PATRON
</cfquery>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...