Tôi đang viết một kịch bản nâng cấp lược đồ cho một sản phẩm phụ thuộc vào cơ sở dữ liệu Oracle. Trong một khu vực, tôi cần tạo một chỉ mục trên một bảng - nếu chỉ mục đó không tồn tại. Có một cách dễ dàng để kiểm tra sự tồn tại của một chỉ mục mà tôi biết tên của một kịch bản Oracle?Cách kiểm tra chỉ mục trong Oracle
Nó sẽ là tương tự như sau trong SQL Server: NẾU NOT EXISTS (SELECT * FROM SYSINDEXES WHERE name = 'myIndex') // Sau đó tạo myIndex tôi
Trừ khi bạn trích dẫn chúng, các đối tượng cơ sở dữ liệu (bao gồm các chỉ mục) được lưu trữ trong chữ hoa. Vì vậy, nếu bạn làm một chỉ mục CREATE INDEX, thì trong USER_INDEXES nó sẽ được lưu trữ dưới dạng MYINDEX. Và Oracle (theo mặc định) sẽ không làm các trường hợp không nhạy cảm. –
ngoài câu trả lời này: nếu bạn cần kiểm tra xem một chỉ mục có tồn tại trong một giản đồ khác hay không, hãy truy vấn ALL_INDEXES thay vì sử dụng USER_INDEXES. Việc kiểm tra USER_INDEXES không hoạt động với "ALTER SESSION SET CURRENT_SCHEMA = XYZ", bạn vẫn sẽ truy vấn các chỉ mục cho người dùng hiện đã đăng nhập. – SaschaM78