On Thu, Aug 31, 2017 at 11:26 AM, Achilleas Mantzios <
ach...@matrix.gatewaynet.com> wrote:

> On 31/08/2017 18:20, Melvin Davidson wrote:
>
> >you could just create an event trigger looking for CREATE TABLE as
> filter_value:
>
> I have tried that. Unfortunately, I have been unable to extract the table
> name from the event because TG_TABLE_NAME is not
> available during an event trigger, albeit perhaps I am missing something?
>
> You need to use ddl_command_end event and then select from
> pg_event_trigger_ddl_commands() . Search for some example how to do this.
>
> That being said, I still believe it is extra work that could easily be
> avoided and should be added to the postgresql catalogs simply to be
> more feature competitive with  Oracle & SQL Server, as well as a boost to
> the PostgreSQL community.
>
> On Thu, Aug 31, 2017 at 10:54 AM, Michael Paquier <
> michael.paqu...@gmail.com> wrote:
>
>> On Thu, Aug 31, 2017 at 10:21 PM, Melvin Davidson <melvin6...@gmail.com>
>> wrote:
>> > Wolfgang, as David said, a column in pg_class for the creation time of
>> a table does not exist. I long ago requested that feature as it is
>> > in other DB's (Oracle & MS SQL Server), but the main reason that it was
>> not done was that no one was interested in doing it.
>>
>> Is there any need for a column in pg_class for that? You could just
>> create an event trigger looking for CREATE TABLE as filter_value:
>> https://www.postgresql.org/docs/9.6/static/sql-createeventtrigger.html
>> And then have this event trigger just save the timestamp value of
>> now() in a custom table with the name and/or OID of the relation
>> involved.
>> --
>> Michael
>>
>
>
>
> --
> *Melvin Davidson*
> I reserve the right to fantasize.  Whether or not you
> wish to share my fantasy is entirely up to you.
>
> Achilleas Mantzios
> IT DEV Lead
> IT DEPT
> Dynacom Tankers Mgmt
>
>
*>You need to use ddl_command_end event and then select from
pg_event_trigger_ddl_commands()*

*I have, but the result for CREATE TABLE is an error.*






















*CREATE OR REPLACE FUNCTION public.fn_notify_ddl()  RETURNS event_trigger
AS$BODY$DECLARE    obj record;BEGIN    RAISE NOTICE 'Type: %', TG_TAG;
RAISE NOTICE 'Command: %', current_query();    RAISE NOTICE 'Table: %',
(pg_event_trigger_ddl_commands()).objid;   -- < causes an error?    RAISE
NOTICE 'DB Name: %', current_database();    RAISE NOTICE 'DB User: %',
session_user;    RAISE NOTICE 'DB Port: %', inet_server_port();    RAISE
NOTICE 'Server Host: %', inet_server_addr();    RAISE NOTICE 'Client Host:
%', inet_client_addr();END;$BODY$  LANGUAGE plpgsql VOLATILE  COST
100;ALTER FUNCTION public.fn_notify_ddl()  OWNER TO postgres;*





*CREATE TABLE sneaky_pete( id_col varchar(5),  col2   varchar(1),
CONSTRAINT sneaky_pete_pk PRIMARY KEY (id_col));*

*ERROR:  query "SELECT (pg_event_trigger_ddl_commands()).objid" returned
more than one row*

-- 
*Melvin Davidson*
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

Reply via email to