2016-09-01 3 views
0

Так что я нашел этот пример:создать триггер в PosgreSQL

create function eager.account_insert() returns trigger 
    security definer 
    language plpgsql 
as $$ 
    begin 
    insert into eager.account_balances(name) values(new.name); 
    return new; 
    end; 
$$; 

create trigger account_insert after insert on accounts 
    for each row execute procedure eager.account_insert(); 

То, что я не могу понять: функция eager.account_insert() не принимает никаких аргументов, однако, он работает с переменной new. Он возвращает его, но не должен ли он возвращаться trigger?

Кроме того, это: insert into eager.account_balances(name), это не какая-то определенная запись, какая она?

ответ

0

newold, когда это заявление об обновлении) является RECORD, который вы вставляете или обновляете. Вы можете получить колонки из него и делать с ними все, что хотите. Много раз BEFORE INSERT Триггеры проверки допустимости значений и т.д.

Функция должна возвращать RECORD с теми же столбцами, как таблицы или NULL, если вставка не должно произойти (обычно для INSTEAD триггеров).

Оператор insert представляет собой обычную вставку с одним столбцом, указанным в таблице, и значение берется из недавно вставленной колонки RECORDname.

documentation объясняет триггеры очень хорошо.

Смежные вопросы