多数のFirebirdデータベースを一度に更新するスクリプトを公開しようとしています。一部にはこの制約がないため、ドロップする前に制約の存在を確認したいと思います。
ALTER TABLE PROCESS_CATEGORY DROP CONSTRAINT INTEG_669;
RDB$RELATION_CONSTRAINTS
テーブル、制約の名前がわかっている場合。このようなもの:
set term ^;
execute block as
begin
if (exists(
select 0 from rdb$relation_constraints
where rdb$constraint_name = 'INTEG_669'
)) then
execute statement 'alter table process_category drop constraint INTEG_669';
end
^
set term ;^
中古 execute statement
理由はalter table
はブロック内では許可されておらず、if
ステートメントは外部では許可されていません。