Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / PostgreSQL |
![]() ![]() |
Alex_Wong Member Откуда: Сообщений: 176 |
Хочу быстро обновлять значения большой таблицы, правильно ли делать через insert? Тогда думаю создать колонку в таблице, например n2, которая будет дублировать значение bigserial в случае, когда вставляется новая запись, а для случаев, когда запись обновляется инсертом, - то будет принимать значение исходной обновляемой записи. Типа такого: -------------------------- n1 n2 infо -------------------------- 1 1 aaa 2 2 bbb 3 1 xxx 4 4 ccc 5 2 yyy здесь обновил: aaa на xxx и bbb на yyy. т.к. наличие колонки bigserial _primary key не даёт возможность её дубля в колонку n2: ERROR: ОШИБКА: текущее значение (currval) для последовательности "tb4_idtb4_seq" ещё не определено в этом сеансе, то можно через nextval() сделать так, что последовательность idtb4 будет идти через раз: 1 3 5 ... вместо: 1 2 3 ...
здесь опустил колонку info, т.к. вопрос в самом подходе: будет ли он работать в многопользовательской системе и как сделать правильно, спасибо. |
||
10 фев 21, 23:08 [22279199] Ответить | Цитировать Сообщить модератору |
Maxim Boguk Member Откуда: Melbourne, Австралия Сообщений: 4581 |
Alex_Wong, Я бы рекомендовал такие вещи через before insert/update триггер решить а не извращаться -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru |
10 фев 21, 23:52 [22279211] Ответить | Цитировать Сообщить модератору |
Alex_Wong Member Откуда: Сообщений: 176 |
Maxim Boguk, у Вас, случайно, нет примера ? |
11 фев 21, 00:00 [22279214] Ответить | Цитировать Сообщить модератору |
Maxim Boguk Member Откуда: Melbourne, Австралия Сообщений: 4581 |
это вы уже совсем разленились )) -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru |
||||
11 фев 21, 00:16 [22279218] Ответить | Цитировать Сообщить модератору |
Все форумы / PostgreSQL | ![]() |