MySQL: могу ли я обновить запись в текущем наборе результатов или мне нужно 2 параллельных запроса / соединения - PullRequest
0 голосов
/ 17 сентября 2011

Я пишу приложение на C, которое извлекает несколько записей с помощью одного оператора select. После выдачи запроса я извлекаю эти записи, используя mysql_use_result, затем повторяю mysql_fetch_row.

Это работает нормально, но теперь я хочу обновить каждую запись после ее получения. Мои варианты, как я их вижу (но, возможно, технически невозможно):

  1. Выполните второй SQL-запрос для обновления этой одной записи, пока первый набор результатов еще используется (но если я выполню второй запрос, он испортит набор результатов из моего первого запроса ??)

  2. Откройте другое соединение, затем выполните другой SQL-запрос для обновления этой записи. (Но могу ли я открыть два соединения от одного и того же процесса к одному и тому же серверу SQL, и не испортит ли первое соединение?)

  3. Измените мой первый запрос, чтобы получать по одной записи за раз, освободить набор результатов, а затем выполнить второй запрос, чтобы обновить запись, а затем повторить. Это кажется неэффективным. (Могу ли я повторно использовать то же соединение после того, как я mysql_free_result?)

Что возможно? Как правильно справиться с этим?

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2011

Вы также можете прочитать все строки, запомнить обновления, которые нужно сделать, и выпустить обновления после этого. Наилучшим способом может быть выдача одного оператора update, который обновляет все строки одновременно. Возможно ли это, зависит от того, что именно вам нужно обновить.

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