powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать присвоение в триггере
2 сообщений из 2, страница 1 из 1
Помогите написать присвоение в триггере
    #39025616
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было так, но не работает на Insert, т.к. вставка идет с NEW
Код: sql
1.
2.
3.
4.
5.
6.
CREATE OR REPLACE FUNCTION logs.my () RETURNS TRIGGER AS $$
BEGIN
INSERT  INTO logs.my (operation, tnum, tname) 
SELECT  TG_OP,  OLD.tnum, OLD.tname;
END;
$$ LANGUAGE plpgsql;


Писать в теле разветвление не хочу, думаю присвоить в зависимости от операции переменной VAL либо новые, либо старые данные, и потом писать в теле функции VAL (думаю так будет короче):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION logs.my () RETURNS TRIGGER AS $$
DECLARE
IF TG_OP = 'INSERT' THEN VAL ALIAS  FOR  NEW ELSE VAL ALIAS FOR OLD END IF;
--VAL ALIAS FOR CASE WHEN  TG_OP = 'INSERT' THEN NEW ELSE OLD END;
BEGIN
INSERT  INTO logs.my (operation, tnum, tname) 
SELECT  TG_OP,  VAL.tnum, VAL.tname;
END;
$$ LANGUAGE plpgsql;


Но вот как написать, незнаю
...
Рейтинг: 0 / 0
Помогите написать присвоение в триггере
    #39025620
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал так, работает:
Код: sql
1.
2.
3.
4.
DECLARE
VAL RECORD;
BEGIN
IF TG_OP = 'INSERT' THEN VAL := NEW; ELSE VAL := OLD; END IF;


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


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