我需要将现有外键从“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;
但是,我试图避免直接使用系统表,我想知道是否有更好/更优雅的方式来改变我的外键。
答案 0 :(得分:3)
没有更好的方法,系统表是找出约束名称的唯一方法。