MySQL UPDATE и SELECT в одной передаче

 if eachenv=="DEV01" or "DEV02":

Означает, если одно из следующего:

  • eachenv равно "DEV01"
  • "DEV02"

Ну, а как насчет "DEV02"? Он существует, так что вариант условия будет «правдивым», поэтому ваш if всегда пройдет.

Это не то, как работают цепные условия.

Вы имели в виду:

if eachenv=="DEV01" or eachenv=="DEV02":

Теперь, если одно из следующего:

  • eachenv равно "DEV01"
  • [119 ] равно "DEV02"

Yay!

18
задан linuxbuild 7 February 2011 в 11:09
поделиться

3 ответа

Можно создать процедуру, которая делает это:

CREATE PROCEDURE prc_get_task (in_guid BINARY(16), OUT out_params VARCHAR(200))
BEGIN

  DECLARE task_id INT;

  SELECT id, out_params
  INTO task_id, out_params
  FROM tasks
  WHERE guid = 0
  LIMIT 1
  FOR UPDATE;

  UPDATE task
  SET guid = in_guid
  WHERE id = task_id;

END;

BEGIN TRANSACTION;

CALL prc_get_task(@guid, @params);

COMMIT;
6
ответ дан 30 November 2019 в 09:07
поделиться

При поиске единого запроса затем, этого не может произойти. ОБНОВЛЕНИЕ функционально-специализировано возвращает просто количество объектов, которые были обновлены. Точно так же ИЗБРАННАЯ функция не изменяет таблицу, только возвращает значения.

Используя процедуру действительно превратит его в единственную функцию, и может быть удобно, если блокировка является беспокойством о Вас. Если Ваше самое большое беспокойство является сетевым трафиком (т.е.: передача слишком многих запросов), затем используют процедуру. Если Вы касаетесь, перегрузка сервера (т.е.: DB также упорно работает), затем, дополнительные издержки процедуры могли сделать вещи хуже.

1
ответ дан 30 November 2019 в 09:07
поделиться

Я не знаю о единственной части вызова, но что Вы описываете, блокировка. Блокировки являются существенным элементом реляционных баз данных.

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

пост-ГРЭС documenation блокировки имеют яркий пример, описывающий точно, что Вы хотите сделать: заблокируйте таблицу, считайте таблицу, измените таблицу.

0
ответ дан 30 November 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: