У меня есть следующий оператор UPDATE:
update mytable
set a = first_part(genid()),
b = second_part(genid()),
c = third_path(genid())
where package_id = 10;
В этом примере функция genid()
вызывается три раза для каждой строки, что неправильно - я хочу, чтобы она вызывалась только один раз для каждой строки mytable
.
Я использую базу данных PostgreSQL 8.4. Как правильно написать обновление?
Я пробовал что-то вроде этого:
update mytable
set a = first_part(g),
b = second_part(g),
c = third_path(g)
where package_id = 10
from genid() as g;
Но это не сработало, потому что genid()
был вызван только один раз для всего оператора обновления.