From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Durumdara <durumdara(at)gmail(dot)com>, Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Restore - disable triggers - when they fired? |
Date: | 2018-03-20 14:47:59 |
Message-ID: | b98fbad7-2080-603c-5c8b-be95407b5996@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 03/20/2018 07:31 AM, Durumdara wrote:
> Dear Members!
>
> I saw in PGAdmin 3/4 that pg_restore have an option "disable triggers".
>
> Because we need to move some databases in the near future I have to know
> about the meaning of this option.
>
> I wrote a table with an BEFORE UPDATE trigger:
>
> create table tr_test
> (
> id integer not null primary key,
> value1 varchar(100),
> value2 varchar(100)
> );
>
> insert into tr_test values(1, 'a', 'a');
> insert into tr_test values(2, 'b', 'b');
>
> CREATE OR REPLACE FUNCTION tfbu_tr_test()
> RETURNS trigger AS
> $BODY$
> begin
> new.value2 = cast(current_timestamp as varchar(30));
> RETURN NEW;
> end;
> $BODY$
> LANGUAGE plpgsql VOLATILE
> COST 100;
>
>
> CREATE TRIGGER tbi_tr_test
> BEFORE INSERT
> ON tr_test
> FOR EACH ROW
> EXECUTE PROCEDURE public.tfbu_tr_test();
>
> insert into tr_test values(3, 'c', 'c');
> select * from tr_test;
>
>
> and I tried to dump and restore in PGAdmin IV.
>
> The dumped data is same as I read after restore.
>
> The pg_restore log shows me that triggers and indexes created after data
> copy.
>
> At this point I confused in "disable triggers" option.
>
> When it would be useful?
https://www.postgresql.org/docs/10/static/app-pgrestore.html
"--disable-triggers
This option is relevant only when performing a data-only restore.
It instructs pg_restore to execute commands to temporarily disable
triggers on the target tables while the data is reloaded. Use this if
you have referential integrity checks or other triggers on the tables
that you do not want to invoke during data reload.
Presently, the commands emitted for --disable-triggers must be done
as superuser. So you should also specify a superuser name with -S or,
preferably, run pg_restore as a PostgreSQL superuser.
>
> Firstly I supposed that data copy somehow could start the triggers - but
> how?
>
> Which triggers? Or how they fired with this order?
>
> Or they remains as disabled AFTER the backup for next, by hand
> manipulations?
>
> So please light my mind a little!
>
> Thank you!
>
> Regards
> dd
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Durumdara | 2018-03-20 14:56:51 | Re: Restore - disable triggers - when they fired? |
Previous Message | Durumdara | 2018-03-20 14:31:51 | Restore - disable triggers - when they fired? |