Значение приращения столбца SQLite по умолчанию при вставке - PullRequest
0 голосов
/ 14 мая 2018

Фон / Информация о Laravel

Не стесняйтесь переходить к вопросу. У меня есть обработчик исключений, который отслеживает количество попыток сделать вызов API. Если вызов не удался, я увеличиваю количество попыток и сохраняю ошибку исключения в таблицу базы данных. Эта настройка позволяет нам запустить запланированную команду Artisan и прекратить попытки конкретного вызова, если он не проходит определенное количество раз. В настоящее время я использую метод updateOrCreate Laravel в обработчике:

try {
    Vmi::createPurchaseOrder($purchaseOrder);
} catch (Exception $e) {
    PurchaseOrder::updateOrCreate(
        [
            'invoice_id' => $purchaseOrder->invoice_id
        ],
        [
            'error'    => $e->getMessage(),
            'attempts' => DB::raw('attempts + 1'),
        ]
    );
}

Соответствующие столбцы в таблице:

  • invoice_id unsigned int
  • текст ошибки
  • пытается без знака int по умолчанию 0

В MySQL это, кажется, работает нормально, но я недавно переключил свои тесты на базу данных SQLite в памяти, которой не нравится тот факт, что оператор вставки пытается увеличить значение столбца. Я получаю следующую ошибку:

PDOException: SQLSTATE[HY000]: General error: 1 no such column: attempts

SQLite Вопрос

Есть ли способ увеличить значение столбца по умолчанию в SQLite при выполнении вставки?

-- I suppose this is kind of odd, but it works in MySQL and does not work in SQLite.

insert into purchase_orders (
    invoice_id,
    error,
    attempts
) values (
    1,
    'Invalid customer ID',
    attempts + 1
);

-- Of course, this works as expected.

update purchase_orders
set attempts = attempts + 1
where invoice_id = 1;
...