nicholaswmin
nicholaswmin

Reputation: 23009

Multiple Trigger declarations/assignments in a single statement

I'd like to declare a couple of Triggers and assign them to multiple tables in a single script.

Example:

create or replace function trigger_a()
returns trigger language plpgsql as $$
begin
    new.fetchname := new.name;
    return new;
end
$$;

create or replace function trigger_b()
returns trigger language plpgsql as $$
begin
    new.postname := new.name;
    return new;
end
$$;

create trigger trigger_a
create trigger trigger_b

before insert or update on tableFoo
for each row execute procedure trigger_a();

before insert or update on tableBar
for each row execute procedure trigger_b();

before insert or update on tableBaz
for each row execute procedure trigger_b();

Running the above throws a syntax error:

syntax error at or near "create"

Upvotes: 0

Views: 40

Answers (1)

Vao Tsun
Vao Tsun

Reputation: 51659

This should work:

create or replace function trigger_a()
returns trigger language plpgsql as $$
begin
    new.fetchname := new.name;
    return new;
end
$$;

create or replace function trigger_b()
returns trigger language plpgsql as $$
begin
    new.postname := new.name;
    return new;
end
$$;

create trigger trigger_a
before insert or update on tableFoo
for each row execute procedure trigger_a();

create trigger trigger_b
before insert or update on tableBar
for each row execute procedure trigger_b();

create trigger trigger_b2
before insert or update on tableBaz
for each row execute procedure trigger_b();

Upvotes: 1

Related Questions