После долгих исследований я думаю, что ответ заключается в том, что это невозможно.
Функция 'токен изменения строки' довольно интересна, но (насколько я могу заметить) бесполезна. Для DB2 / 400, по крайней мере, при изменении записи «токен изменения строки» будет действительно увеличиваться на 1. Однако несколько других записей также увеличатся на 1 одновременно. Это можно увидеть, если перечислить все записи, упорядоченные по убыванию «токена изменения строки». Первоначально все «токены изменения строки могут быть равны 0, обновите запись и выполните листинг заново, и для набора записей их« токен изменения строки »будет равен 1. Кроме того, кажется, что« сброс маркера изменения строки может быть получен, возможно, на IPL ». или другое событие типа машины.
Похоже, это происходит потому, что записи хранятся внутри на страницах, а «токен изменения строки» должен действительно быть «токеном изменения страницы». Таким образом, хотя может показаться, что это работает, если другой пользователь обновил другую запись на той же странице, тогда код может подумать, что запись была изменена, а на самом деле это не так, просто соседняя запись.
Я по существу решилпроблема с использованием старомодного метода. Я не уверен, есть ли у него имя, но я собираюсь назвать его «Довольно оптимистичная блокировка». Если мне нужно обновить некоторые поля в записи, я сначала сохраняю старые значения, а затем использую старые значения в предложении 'where' в обновлении, чтобы обновление не было выполнено, если оно изменилось. Это может означать много параметров в операторе обновления, но это работает.