Я прочитал некоторые материалы, прежде чем сказать, что каждый оператор обновления в postgresql является атомарным.
Например,
update set column_1 = column_1 + 100 where column_2 = 10;
Даже если у меня несколько процессов, вызывающих обновление одновременно, я могу положитьсяна этом, что они будут происходить в последовательности, потому что каждое обновление атомарно позади сцены, и цикл "read_modify_write" инкапсулирован в пакет.
Однако, что, если оператор обновления выглядит следующим образом:
update set column_1 = myFunction(column_1) where column_2 = 10;
Здесь myFunction () - это хранимая процедура, созданная мной. В этой функции я буду применять различные математические операции к column_1 в зависимости от ее количества.Что-то вроде:
if(column_1 < 10):
// do something
else if (column_1 < 20):
// do something
else
// do something
В этом случае, когда один оператор обновления содержит самоопределяемую функцию, он остается атомарным?