powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / О триггерах
5 сообщений из 5, страница 1 из 1
О триггерах
    #32986442
raven10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по поводу триггеров....
ситуация следующая: после добавления новой записи в таблицу, в таблице автоматически формируются некоторые данные, например, текущее время, автоинкрементный id...
Есть ли возможность создать триггер, который после инсерта возвращал бы либо всю новую запись, либо ее отдельные поля...
Если нет, то есть ли в постгресе функция, которая возвращает последний вставленный id???
...
Рейтинг: 0 / 0
О триггерах
    #32986561
Licvidator_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В триггере определены специальные объекты NEW и OLD, которые соответственно содержат в себе новую и старую версию строки. По идее из них можно получить интересующую тебя информацию.
...
Рейтинг: 0 / 0
О триггерах
    #32986638
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Есть ли возможность создать триггер, который после инсерта возвращал бы либо всю новую запись, либо ее отдельные поля...

куда возврящал?


currval('table_field_seq')

точно не помню,посмотри в доках как правильно будет называтся сиквенс созданный автоматически при создании поля с типом serial
...
Рейтинг: 0 / 0
О триггерах
    #32986646
raven10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том, что я использую объекты NEW или OLD... но может я просто не понимаю, как работают триггеры?

создал простую таблицу:
CREATE TABLE test
(
id serial NOT NULL,
name text
)
WITHOUT OIDS;
ALTER TABLE test OWNER TO "Raven";

триггерную функцию:
CREATE OR REPLACE FUNCTION "A"()
RETURNS "trigger" AS
$BODY$begin
return new;
end$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION "A"() OWNER TO "Raven";

и сам триггер:
CREATE TRIGGER OnInsertTrigger
AFTER INSERT
ON test
FOR EACH ROW
EXECUTE PROCEDURE "A"();

По моим ощущениям, на запрос:
insert into "test" ("name") values ('Raven')

должно приходить что то вроде данных из одной строки, содержащей в первой колонке - "id", во второй - "name"... то есть новый id и само имя - Raven...

может я не прав???
...
Рейтинг: 0 / 0
О триггерах
    #32986686
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
операция Inset никогда и ниче не возврящает(почти, но это к теме не относится) несмотря на то что у тебя есть или нет тригера на эту таблицу.
она либо вставляет строку либо нет..


если тебе надо получить тот самый id который был вставлен делай как я тебе написал в предыдущем посте.


p.s.

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


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