Могу ли я повторно использовать переменную связывания в операторе «вставка ... при повторном обновлении ...»? - PullRequest
2 голосов
/ 24 апреля 2009

Я пытаюсь выполнить запрос, который использует переменные связывания для базы данных mysql. Мне интересно, как я могу сказать двигателю "сбросить" назначения переменных связывания. Я уверен, что пример объяснит намного лучше, чем мой бедный мозг.

Вот запрос:

INSERT INTO site_support_docs
      (
          ASSET_ID,
          TIME_STAMP,
          SITE_NAME,
          DOCUMENT_NAME,
          DOCUMENT_LOCATION,
          DOCUMENT_CONTENT,
          DOCUMENT_LAST_MODIFIED
      )
VALUES (?, ?, ?, ?, ?, ?, STR_TO_DATE(?, '%M %e, %Y %r'))
ON DUPLICATE KEY UPDATE asset_id   = ?,
                        time_stamp   = ?,
                        site_name   = ?,
                        document_name   = ?,
                        document_location   = ?,
                        document_content   = ?,
                        document_last_modified   =
                           STR_TO_DATE(?, '%M %e, %Y %r')

Моя проблема в том, что восьмое "?" интерпретируется как новая переменная связывания, когда их всего семь. В любом случае, я думаю, что могу вернуться к использованию фактических значений ... но я уверен, что есть лучший способ Matt

1 Ответ

5 голосов
/ 24 апреля 2009

MySQL предлагает функцию «VALUES ()», которая предоставляет значение, которое было бы вставлено, если бы не существовал конфликт повторяющихся ключей. Вам не нужно повторять заполнитель.

ВСТАВЬТЕ В ЗНАЧЕНИЯ t (?) НА ДУБЛИКАТЬ ОБНОВЛЕНИЕ КЛЮЧА x = ЗНАЧЕНИЯ (x);

http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_values

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...