Mysql заводят в тупик необходимое объяснение

Основная идея состоит в том, что goto дает Вам слишком много свободы сделать что-то, что Вы не намеревались. Это может вызвать ошибки в местах, которые, кажется, не связаны с оператором перехода, таким образом, это делает обслуживание кода более трудным. Если Вы думаете, что Вам нужен оператор перехода, Вы неправы:) и необходимо вместо этого заново продумать конструкцию кода. Поэтому современные языки программирования приложили много сил для предоставления Вам читаемые, удобные в сопровождении конструкции управления потоком и механизмы обработки исключений.

я также собираюсь не согласиться с lassevk. Так как goto злоупотребляют больше, чем правильно используемый, я полагаю, что он не имеет никакого места на хорошо разработанном языке. Даже для "идеального" использования goto, другие способы сделать его, которые требуют, больше кода должно быть предпочтено.

Так, таким образом, да это все еще считают вредным.

11
задан BrainCore 5 December 2009 в 07:55
поделиться

1 ответ

Первым шагом является определение двух запросов:

SELECT api_key, completed, compute_units , created, deleted, flags, func_name , group_id, hostname, is_meta , jid, label, language, num_children , parent_ujid , приоритет, process_id , перезапускаемый, статус, тип , uid, ujid, версия, wid ИЗ заданий WHERE status = 'new' и is_meta = 0 ORDER BY priority asc, jid asc FOR UPDATE

.. и:

UPDATE jobs SET status = 'done' WHERE jid = 10099

Первый - это SELECT, второй - UPDATE. Но ключ - это FOR UPDATE в конце SELECT, который я выделил жирным шрифтом.

Синтаксис FOR UPDATE предназначен для чтения блокировки - вы можете прочитать документацию об этом здесь . В документации по взаимоблокировке MySQL предлагается использовать READ COMMITTED , если вы столкнетесь с проблемами блокировки, подобными этим.

SHOW INNODB STATUS просмотреть

6
ответ дан 3 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

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