Firebird:Alter" anonymous"外键

时间:2014-11-11 09:42:55

标签: sql foreign-keys firebird firebird2.5

我需要将现有外键从“on delete restrict”更改为“on delete cascade”。不幸的是,这个错误在Q / A中潜入。

在我的数据库中,我有几个自动命名的forign键关系(INTEG_1,INTEG_2,...)。我必须修复的约束的名称是新安装中的另一个,而不是版本2中的更新,甚至是从版本1更新此版本2之后的另一个。

由于引用表只有一个外键,因此该语句为我提供了约束的名称:

SELECT RDB$CONSTRAINT_NAME
FROM RDB$RELATION_CONSTRAINTS
where RDB$CONSTRAINT_TYPE = 'FOREIGN KEY' 
  and RDB$RELATION_NAME = 'MY_TABLE_NAME'

然后我可以删除并随后重新创建外键(这次使用“真实”名称)

alter table MY_TABLE_NAME 
drop constraint <result from above>;

alter table MY_TABLE_NAME
add constraint fk_my_table_name_purpose foreign key (other_id) 
      references other_table(id) on delete cascade;

但是,我试图避免直接使用系统表,我想知道是否有更好/更优雅的方式来改变我的外键。

1 个答案:

答案 0 :(得分:3)

没有更好的方法,系统表是找出约束名称的唯一方法。