Tôi đang cố gắng xây dựng một tập lệnh Firebird để đảm bảo rằng một chỉ mục nhất định tồn tại và được tạo chính xác. Sau một chút của Googling xung quanh, tôi đã nhận những gì có vẻ là cú pháp đúng:Làm cách nào để tạo tập lệnh chỉ mục có thể lặp lại?
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);
Điều này sẽ chạy một lần, và nó hoạt động tốt. Nhưng nếu tôi cố gắng chạy nó lần thứ hai, tôi nhận được lỗi "chỉ mục đã tồn tại", cho biết phần execute statement
không thực sự chạy.
Tôi đang thiếu gì? Làm cách nào để làm cho tập lệnh này hoạt động đúng?
Cảm ơn. Điều đó hiệu quả. –