Subject | Re: [firebird-support] Temporary disable FK constraint |
---|---|
Author | Rik van Kekem |
Post date | 2015-11-06T16:15:31Z |
Scott Morgan blumf@... [firebird-support] wrote:
How to activate all indexes? http://www.firebirdfaq.org/faq274/
So doing the reverse should work too:
SET TERM !! ;
EXECUTE BLOCK AS
DECLARE VARIABLE stmt VARCHAR(1000);
BEGIN
for select 'ALTER INDEX '||rdb$index_name ||' INACTIVE;'
from rdb$indices
where (rdb$system_flag is null or rdb$system_flag = 0)
order by rdb$foreign_key nulls last
into :stmt
do EXECUTE STATEMENT :stmt;
END!!
SET TERM ; !!
(not tested)
If it's just an import of one table I would only deactivate the
indexes/primary keys/foreign keys of that table (and foreign keys
pointing to that table). (Could also be done with a EXECUTE BLOCK and
select of the correct rows)
(just don't forget to activate them again afterwards :))
Grtz,
Rik
> In a FB2.5 system is there a way to temporarily disable foreign keyWell, here is the way to activate indexes and foreign keys:
> constraints? i.e. something like 'ALTER INDEX ... INACTIVE'
How to activate all indexes? http://www.firebirdfaq.org/faq274/
So doing the reverse should work too:
SET TERM !! ;
EXECUTE BLOCK AS
DECLARE VARIABLE stmt VARCHAR(1000);
BEGIN
for select 'ALTER INDEX '||rdb$index_name ||' INACTIVE;'
from rdb$indices
where (rdb$system_flag is null or rdb$system_flag = 0)
order by rdb$foreign_key nulls last
into :stmt
do EXECUTE STATEMENT :stmt;
END!!
SET TERM ; !!
(not tested)
> Alternatively, how safe is dropping/recreating the FKs on the fly?If nobody is using the database, I see no harm (but I'm not an expert).
If it's just an import of one table I would only deactivate the
indexes/primary keys/foreign keys of that table (and foreign keys
pointing to that table). (Could also be done with a EXECUTE BLOCK and
select of the correct rows)
(just don't forget to activate them again afterwards :))
Grtz,
Rik