powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер BEFORE UPDATE
2 сообщений из 2, страница 1 из 1
Триггер BEFORE UPDATE
    #38943383
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не выходит каменный цветок...
Прошу совета, помощи...

PostgreSQL 9.4.1

имеется таблица:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE TABLE zags_data1.sp_operation_mode
(
  id integer NOT NULL, -- Идентификатор
  name character varying(50) NOT NULL, -- Наименование
  ord integer, -- Порядок
  flag_output integer NOT NULL DEFAULT 1, -- Флаг вывода для выбора
  date_begin date NOT NULL DEFAULT to_date('01011900'::text, 'ddmmyyyy'::text), -- Дата начала действия элемента
  date_end date NOT NULL DEFAULT to_date('01012100'::text, 'ddmmyyyy'::text), -- Дата окончания действия элемента
  id_user uuid NOT NULL, -- Пользователь, изменивший/создавший запись
  date_rec timestamp with time zone NOT NULL DEFAULT now(), -- Дата изменения/создания записи
  CONSTRAINT sp_operation_mode_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE zags_data1.sp_operation_mode
  OWNER TO postgres;

CREATE UNIQUE INDEX idx_sp_operation_mode01
  ON zags_data1.sp_operation_mode
  USING btree
  (id);

CREATE TRIGGER tr_sp_operation_mode_update
  BEFORE UPDATE
  ON zags_data1.sp_operation_mode
  FOR EACH ROW
  EXECUTE PROCEDURE zags_data1.f_tr_sp_operation_mode_update();



Имеется триггерная функция:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION zags_data1.f_tr_sp_operation_mode_update()
  RETURNS trigger AS
$BODY$BEGIN
	NEW.data_rec = now();
	RETURN NEW;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION zags_data1.f_tr_sp_operation_mode_update()
  OWNER TO postgres;



Загружены данные в таблицу... см. прикрепленный рисунок...
Цель проверить работу триггера на UPDATE поля data_rec

Код: sql
1.
UPDATE zags_data1.sp_operation_mode SET name = 'регистрация_000' WHERE id = 4;


ОШИБКА: в записи "new" нет поля "data_rec"
CONTEXT: функция PL/pgSQL zags_data1.f_tr_sp_operation_mode_update(), строка 2, оператор присваивание
********** Ошибка **********
ОШИБКА: в записи "new" нет поля "data_rec"
SQL-состояние: 42703
Контекст: функция PL/pgSQL zags_data1.f_tr_sp_operation_mode_update(), строка 2, оператор присваивание
******
Непонятно, что неправильно присвоил ?
...
Рейтинг: 0 / 0
Триггер BEFORE UPDATE
    #38943391
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь... совсем заработался...
ошибка в
Код: sql
1.
NEW.data_rec = now();


надо
Код: sql
1.
NEW.date_rec = now();



Еще раз извиняюсь...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Триггер BEFORE UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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