powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер before update
6 сообщений из 6, страница 1 из 1
Триггер before update
    #33269600
Mariuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы одна с актуальной информацией (т.е. действительной на данный момент времени) и другая с устаревшей. Структура таблиц одинаковая. Пишется триггер before update для таблицы с актуальной информацией, его задача перенести запись которая была до обновления в таблицу с устаревшей информацией. Причем если эта запись переносится в таблицу с устаревшей информацией первый раз за сегодня она добавляется, если второй раз, тогда обновлется уже добавленная в этот день.
Подскажите пожалуйста как обновить запись в устаревшей таблице не перечисляя все поля
Пробовал
Update old_people from OLD where ......
Update old_people set (OLD.*) where .....
Оба варианта не работают. Перечисляю после set все поля - всё работает, условие после where во всех трех вариантах одинаковое.
Для добавления пишу
insert into old_people values (OLD.*) все работает.
Буду благодарен за любые советы.
...
Рейтинг: 0 / 0
Триггер before update
    #33269623
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DELETE FROM old_people WHERE pkey = OLD.pkey
INSERT INTO old_people VALUES (OLD.*)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Триггер before update
    #33269654
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или как вариант всегда обновляй(UPDATE) если GET DIAGNOSTIC ROW_COUNT =0 тогда вставляй... это будет быстрее delete ; insert т.к во всех случаях кроме первой вставки будет выполнятся только один запрос а не 2.
...
Рейтинг: 0 / 0
Триггер before update
    #33269658
Mariuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XM
DELETE FROM old_people WHERE pkey = OLD.pkey
INSERT INTO old_people VALUES (OLD.*)
Posted via ActualForum NNTP Server 1.3

Спасибо за мысль но тогда уж
DELETE FROM old_people WHERE pkey = OLD.pkey and date=current_date
INSERT INTO old_people VALUES (OLD.*)

Но я то думал что вопрос всего лишь в синтаксисе, что должно быть стандартное решение, а не в обход.
...
Рейтинг: 0 / 0
Триггер before update
    #33269686
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помойму в апдейте полюбому надо все поля перечислять..
...
Рейтинг: 0 / 0
Триггер before update
    #33269720
Mariuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wbearпомойму в апдейте полюбому надо все поля перечислять..

А если их 250? Сложновато пришлось бы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер before update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]