2008-09-23 39 views
7

Tôi đang làm việc trên các cơ sở dữ liệu có các bảng di chuyển được tạo tự động bởi một số công cụ tối nghĩa. Nhân tiện, chúng tôi phải theo dõi các thay đổi thông tin trong bảng thông qua một số trình kích hoạt. Và, tất nhiên, nó xảy ra rằng một số thay đổi trong cấu trúc bảng đã phá vỡ một số kích hoạt, bằng cách loại bỏ một cột hoặc thay đổi loại của nó, ví dụ.Cách kiểm tra xem trình kích hoạt có hợp lệ không?

Vì vậy, câu hỏi đặt ra là: Có cách nào để truy vấn siêu dữ liệu Oracle để kiểm tra là một số trình kích hoạt bị hỏng hay không, để gửi báo cáo cho nhóm hỗ trợ?

User_triggers cung cấp tất cả các trình kích hoạt và cho biết liệu chúng có được bật hay không, nhưng không cho biết liệu chúng có còn hợp lệ hay không.

Trả lời

16
SELECT * 
FROM ALL_OBJECTS 
WHERE OBJECT_NAME = trigger_name 
AND OBJECT_TYPE = 'TRIGGER' 
AND STATUS <> 'VALID' 
+0

Tốt! Cảm ơn rất nhiều! – gizmo

+3

Chọn * từ user_objects nơi satus! = 'VALID' –

0

Hãy xem SYS.OBJ $, đặc biệt là cột STATUS.

Các vấn đề liên quan