У меня есть (mysql) таблица базы данных со следующими столбцами:
NAME | String (Unique)
STATUS | int
UPDATE_COUNT | int (Unique)
Я хочу, чтобы значение Max (UPDATE_COUNT) отражало совокупное количество обновлений, выполненных для строк в таблице. Например, начиная с пустой таблицы:
Insert - (Name=John, Status=0) - // update count on that row is set to 1
Insert - (Name=Mary, Status=0) - // update count on that row is set to 2
Update - (Name=John, Status=1) - // update count on that row is set to 3
Update - (Name=Mary, Status=2) - // update count on that row is set to 4
и т.д ..
Таким образом, для любой строки, обновленной или вставленной, значение счетчика обновлений, который вставляется или обновляется в каждой строке, равно max (update_count) + 1.
Идея состоит в том, что "select max (update_count) from mytable" результат представляет собой общее количество выполненных вставок / обновлений.
Я хотел бы написать операторы вставки и обновления SQL, которые автоматически увеличивают значение update_count, что-то вроде:
"UPDATE MYTABLE SET STATUS=1,UPDATE_COUNT=(SELECT MAX(UPDATE_COUNT) FROM MYTABLE) WHERE NAME IN ('John', 'Mary')"
Однако это недопустимый sql, оператор обновления может не содержать предложение from, выбираемое из той же таблицы, ошибка в mysql:
"You can't specify target table 'MYTABLE' for update in FROM clause"
Какие-либо предложения о том, как можно обойти это ограничение?