Я прочитал многие из gory подробностей о последовательности записи и понимаю, как это работает в простых случаях.Я не совсем понимаю, что это означает для вложенных подзапросов.
Вот конкретный пример:
Таблица с идентификатором PK и другими столбцами: состояние, температура и дата.
UPDATE table SET state = DECODE(state, 'rainy', 'snowy', 'sunny', 'frosty') WHERE id IN (
SELECT id FROM (
SELECT id,state,temp from table WHERE date > 50
) WHERE (state='rainy' OR state='sunny') AND temp < 0
)
Реальная вещь была более запутанной (в самом внутреннем запросе), но это отражает суть.
Если мы предположим, что столбец состояния не имеет значения NULL, может ли это обновление произойти когда-либо из-заодновременное изменение (т. е. функция DECODE не находит совпадения, значение 'дождливое' или 'солнечное' и пытается вставить нулевое значение в столбец без значения NULL)?