我正在尝试构建一个 Firebird 脚本,以确保某个索引存在并正确创建。经过一番谷歌搜索,我得到了似乎正确的语法:
SET TERM ^ ;
execute block as begin
IF (EXISTS(SELECT RDB$INDEX_NAME
FROM RDB$INDICES
WHERE RDB$RELATION_NAME='TABLE_NAME'
and RDB$INDEX_NAME = 'INDEX_NAME')) THEN
execute statement 'drop index INDEX_NAME';
end
SET TERM ; ^
CREATE UNIQUE INDEX INDEX_NAME
ON TABLE_NAME
(FIELD1, FIELD2, FIELD3);
这将运行一次,并且工作正常。但是,如果我再次尝试运行它,我会收到“索引已存在”错误,这表明该execute statement
部件实际上并未运行。
我错过了什么?如何使此脚本正常工作?