FireBird添加丢弃约束

问题描述:

在Firebird中我想生成用于添加数据库中所有约束的脚本,并且还希望生成用于删除所有外键约束的脚本。FireBird添加丢弃约束

我该怎么做?

要生成一个脚本,轮流删除所有外键,请在任何firebird> = 2.0中使用以下脚本(也许它适用于pre 2.0,但不记得数据字典是否在涉及的系统表中发生了更改):

--generate a script which drops all foreign keys 
--by jachguate http://jachguate.wordpress.com 
--    http://stackoverflow.com/users/255257/jachguate 
select 'alter table '||c.rdb$relation_name||' drop constraint '||c.rdb$constraint_name||';' script_lines 
    from rdb$relation_constraints c 
where c.rdb$constraint_type = 'FOREIGN KEY'; 

编辑

要生成一个脚本来重新创建所有的外键,这个脚本会做的伎俩(对于火鸟> = 2.0)。记得在实际删除外键之前运行它。

select 'alter table '||trim(c.rdb$relation_name) 
     ||' add constraint '||trim(c.rdb$constraint_name) 
     ||' foreign key (' 
     ||(select list(trim(imast.rdb$field_name)) from rdb$index_segments imast where rdb$index_name = c.rdb$index_name) 
     ||') references '||trim(uqc.rdb$relation_name) 
     ||' (' 
     ||(select list(trim(idet.rdb$field_name)) from rdb$index_segments idet where rdb$index_name = uqc.rdb$index_name) 
     ||');' 
    from rdb$relation_constraints c 
     inner join rdb$ref_constraints rc 
      on rc.rdb$constraint_name = c.rdb$constraint_name 
     inner join rdb$relation_constraints uqc 
      on uqc.rdb$constraint_name = rc.rdb$const_name_uq; 

此致敬礼。

+0

添加约束意味着添加那些被删除的约束。 – user490079 2010-11-01 04:18:24

+0

我的答案已更新为包含重新创建外键的脚本。 (_这是丢弃_) – jachguate 2010-11-02 23:57:24