plpgsql replication stored procedure

Поиск
Список
Период
Сортировка
От aaron.clauson@gmail.com
Тема plpgsql replication stored procedure
Дата
Msg-id 1145282338.790460.109290@e56g2000cwe.googlegroups.com
обсуждение исходный текст
Ответы Re: plpgsql replication stored procedure  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: plpgsql replication stored procedure  (Peter Wilson <petew@yellowhawk.co.uk>)
Список pgsql-general
Hi,

I'm trying to write a stored procedure that can capture all the changes
to a table and record the changes based on the table's primary key.

I can almost get there but the sticking point is being able to access
the primary key field of the NEW/OLD record in the trigger stored
procedure without knowing it's name.

The stored procedure is below and what I'm trying to do is find a way
to get the column from the NEW record that has the name
constraintColName. If I could do that I would replace NEW.oid with the
equivalent of NEW[constraintColName] and remove the need for oid's on
the table.

create or replace function replicate() returns trigger as
$$

 declare
  constraintName varchar;
  constraintColName varchar;
  keyId varchar;
  slaves record;

 begin
    select into constraintName constraint_name from
information_schema.table_constraints where table_name = TG_RELNAME and
constraint_type = 'PRIMARY KEY';
    select into constraintColName column_name from
information_schema.key_column_usage where constraint_name =
constraintName;
    -- execute 'select ' || constraintColName || ' from ' || NEW into
keyId;

    for slaves in
     select slaveid from replicationslaves
    loop
     insert into replicationentries values(default, slaves.slaveid,
TG_OP, TG_RELNAME , NEW.oid, default);
    end loop;
    return NULL;
end;$$
language 'plpgsql';

Aaron


В списке pgsql-general по дате отправления:

Предыдущее
От: Rich Shepard
Дата:
Сообщение: Re: Syntax Help Requested
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: the integer type