В моем проекте есть таблица под названием process_detail
. Строка, вставленная в эту таблицу, как только начнется процесс cron и будет обновлена в конце завершения процесса cron. Мы используем grails, которые внутренне заботятся о транзакции на уровне уровня сервиса, то есть транзакция начинается в начале метода, фиксирует, если выполнение метода успешное, откат, если есть какое-либо исключение. Здесь происходит то, что если транзакция не удалась, эта строка также откатывается назад, я не хочу, потому что это тип таблицы . Я попытался создать вложенную транзакцию и сохранить эту строку, а в конце - обновить ее, но с ошибкой блокировки.Grails Немедленная фиксация для объектов в транзакции
Я думаю использовать MyISAM для этой конкретной таблицы, таким образом, мне не нужно беспокоиться о транзакции, потому что MyISAM ее не поддерживает, и она будет немедленно зафиксирована и не будет отката. Вот псевдокод для того, чего я пытаюсь достичь.
def someProcess(){
//Transaction starts
saveProcessDetail(details); //Commit this immediately, should not rollback if below code fails.
someOtherWork;
updateProcessDetail(details); //Commit this immediately, should
//Transaction Ends
}
Pseudo-код для сохранения и обновления детали процесса;
def saveProcessDetail(processName, processStatus){
ProcessDetail pd = new ProcessDetail(processName, processStatus);
pd.save();
}
def updateProcessDetail(processDetail, processStatus){
pd.procesStatus = processStatus;
pd.save();
}
Прошу совета, если это лучше сделать в InnoDB. Ответ может быть уровнем mysql. Я могу найти решение grails. Дайте мне знать, если требуется какая-либо другая информация.
Вы должны показать 'saveProcessDetail()' метод, для того, чтобы нам что-то предложить. –
@AdeelAnsari: Добавлено, я использовал их как метод, которым они могли бы быть просто двумя строками кода, которые создают объект ProcessDetail и сохраняют его. – bitkot