Sto provando a creare uno script di Firebird che garantisca che un determinato indice esista e venga creato correttamente. Dopo un po 'di Googling in giro, ho ottenuto quello che sembra essere la giusta sintassi:Come si crea uno script indice ripetibile?
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);
Questo sarà eseguito una volta, e funziona benissimo. Ma se provo a eseguirlo una seconda volta, visualizzo un errore "l'indice esiste già", che indica che la parte execute statement
non è effettivamente in esecuzione.
Cosa mi manca? Come faccio a far funzionare bene questo script?
Grazie. Ha funzionato. –