Обсуждение: A question relative to creating an audit table
I ma considering setting up a function, and triggers to put a record in an audit table when certain tables are altered. I pretty much think I know how to do this, with one exception. Can a function, called by a trigger, determine what table it was called for? -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin
Why not to pass TG_TABLE_SCHEMA and TG_TABLE_NAME in its arguments? > On 27. Feb 2020, at 22:28, stan <stanb@panix.com> wrote: > > I ma considering setting up a function, and triggers to put a record in an > audit table when certain tables are altered. I pretty much think I know how > to do this, with one exception. > > Can a function, called by a trigger, determine what table it was called > for? > > -- > "They that would give up essential liberty for temporary safety deserve > neither liberty nor safety." > -- Benjamin Franklin > >
On 2/27/20 1:28 PM, stan wrote: > I ma considering setting up a function, and triggers to put a record in an > audit table when certain tables are altered. I pretty much think I know how > to do this, with one exception. > > Can a function, called by a trigger, determine what table it was called > for? > Asked and answered: https://www.postgresql.org/message-id/CAKFQuwY=wXXLZBJMv5ULk4P4B5sF+fnZXWThp-UGERE-NxEb4w@mail.gmail.com -- Adrian Klaver adrian.klaver@aklaver.com
On 27/02/2020 22:28, stan wrote: > I ma considering setting up a function, and triggers to put a record in an > audit table when certain tables are altered. I pretty much think I know how > to do this, with one exception. There are extensions out there that deal with this for you. Here is one: https://github.com/xocolatl/periods/ > Can a function, called by a trigger, determine what table it was called > for? Yes. -- Vik Fearing
On Thu, Feb 27, 2020 at 10:30:15PM +0100, Andrei Zhidenkov wrote: > Why not to pass TG_TABLE_SCHEMA and TG_TABLE_NAME in its arguments? > > > On 27. Feb 2020, at 22:28, stan <stanb@panix.com> wrote: > > > > I ma considering setting up a function, and triggers to put a record in an > > audit table when certain tables are altered. I pretty much think I know how > > to do this, with one exception. > > > > Can a function, called by a trigger, determine what table it was called > > for? > > I suppose I could do that. I have in mind a single function to accomplish the audit log, but I will have to have unique triggers for each table. I was just hoping not to have to do that. Are these values that I could read automatically? Or do I have to hard code them? -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin
Please, read chapter 43.10.1 of the PostgreSQL documentation (https://www.postgresql.org/docs/11/plpgsql-trigger.html). Just to be sure we are on the same page.
On 28. Feb 2020, at 14:59, stan <stanb@panix.com> wrote:On Thu, Feb 27, 2020 at 10:30:15PM +0100, Andrei Zhidenkov wrote:Why not to pass TG_TABLE_SCHEMA and TG_TABLE_NAME in its arguments?On 27. Feb 2020, at 22:28, stan <stanb@panix.com> wrote:
I ma considering setting up a function, and triggers to put a record in an
audit table when certain tables are altered. I pretty much think I know how
to do this, with one exception.
Can a function, called by a trigger, determine what table it was called
for?
I suppose I could do that. I have in mind a single function to accomplish the
audit log, but I will have to have unique triggers for each table. I was
just hoping not to have to do that. Are these values that I could read
automatically? Or do I have to hard code them?
--
"They that would give up essential liberty for temporary safety deserve
neither liberty nor safety."
-- Benjamin Franklin