Trong oracle Tôi có thể chỉ định các cột, mà nên tạo ra một bắn của một cò:Oracle: không bao gồm bản cập nhật của một cột cho bắn một kích hoạt
create or replace trigger my_trigger
before update of col1, col2, col3 on my_table for each row
begin
// the trigger code will be executed only if col1 or col2 or col3 was updated
end;
Bây giờ tôi muốn làm như sau: I don' t muốn kích hoạt để kích hoạt, khi chỉ một cột được cập nhật. Sao có thể như thế được?
Tôi có thể liệt kê tất cả các cột ngoại trừ cột, không nên kích hoạt kích hoạt trình kích hoạt. Điều này khá cồng kềnh đối với các bảng có nhiều cột.
Một cách khác là sử dụng chức năng CẬP NHẬT như thế này:
if not updating('COL3') then ...
Nhưng nếu tôi thay đổi COL1 và COL3 cùng một lúc, báo cáo kết quả ước lượng là false. Đó không phải là những gì tôi muốn kể từ khi, tôi muốn hạn chế thực hiện khi chỉ một cột (COL3) đã được cập nhật.
Sẽ ít cồng kềnh hơn khi liệt kê tất cả các cột sử dụng từ điển dữ liệu. 'SELECT column_name FROM user_tab_columns WHERE table_name = 'MY_TABLE' AND column_name! = 'COL3'; ' –
Điều đó đúng, nhưng ai đó sẽ cần duy trì kích hoạt. Nếu chúng ta sẽ thêm một cột mới hoặc đổi tên nó ... Tôi đã có thể nghe thấy anh ta nói to. Tôi muốn tìm một cách đáng tin cậy với ít đau đớn hơn cho anh ấy và đặc biệt là tôi. ;-) –