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

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


currval('table_field_seq')

точно не помню,посмотри в доках как правильно будет называтся сиквенс созданный автоматически при создании поля с типом serial
...
Рейтинг: 0 / 0
29.03.2005, 16:05
    #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
29.03.2005, 16:20
    #32986686
wbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
О триггерах
операция Inset никогда и ниче не возврящает(почти, но это к теме не относится) несмотря на то что у тебя есть или нет тригера на эту таблицу.
она либо вставляет строку либо нет..


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


p.s.

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


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