Я пытаюсь преобразовать некоторые необработанные вызовы DBI в DBIx :: Class. Я иногда натыкаться что-то вроде:Как увеличить столбец с помощью DBIx :: Class?
UPDATE 'foo' SET bar = bar + 1 WHERE ...
Есть ли способ действительно есть DBIx :: Class выполнить именно такой запрос? Я не хочу, чтобы сделать что-то вроде:
$row->update({ bar => $row->bar() + 1 });
, потому что это состояние гонки есть если несколько процессов пытаются сделать то же самое.
Я мог бы обойти это с помощью какой-то блокировки на уровне базы данных, но мне это кажется хуже, чем просто с использованием исходного запроса. В основном я просто хочу знать, есть ли чистый способ использования DBIC для этого или если я просто буду продолжать использовать необработанные вызовы DBI здесь.
Я предполагаю, что вы имели в виду '$ строка -> {bar} ', а не' $ row-> bar() ' – TLP
Приращения на 1 обычно для счетчиков. Какие условия гонки вы испытываете на этом поле? –
@TLP Я имел в виду $ row-> bar(), где $ row - объект результата DBIC. – oalders