Это не обновление строки, но обновление целое на месте. Используя предоставленную GratefulDeadDatabase, вы можете:
CONNECT remote:localhost/GratefulDeadConcerts;
SELECT performances FROM v;
----+------+------------
# |@CLASS|performances
----+------+------------
0 |null |null
1 |null |5
2 |null |1
3 |null |531
4 |null |394
----+------+------------
UPDATE v SET performances = eval('performances + 2') WHERE performances IS NOT NULL;
SELECT performances FROM v;
----+------+------------
# |@CLASS|performances
----+------+------------
0 |null |null
1 |null |7
2 |null |3
3 |null |533
4 |null |396
----+------+------------
Таким образом, обновление работает с данными на месте. Я довольно новичок в OrientDB, поэтому, возможно, эксперт может сказать мне, если я просто сделал что-то ужасно ужасное.
UPDATE
Обратите внимание, что в вашем примере вы обновляете таблицу со значениями из одной и той же таблицы. То есть, из MyTable в MyTable (если я не понял ваш запрос) и даже в пределах одной строки. Вы можете использовать критерии в предложении WHERE, чтобы обновлять интересующие строки. В моем примере, который был
WHERE performances IS NOT NULL
Нужно ли для Orient использовать ключевое слово AS? FROM MyTable AS T1? –
Уважаемый, с или без AS Orient возвращает ошибку –
Я не вижу псевдонима таблиц, упомянутых вообще в документах. Попробуйте без псевдонима, если у вас есть секунда, просто набрав MyTable. –