Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle Trigger ORA-04098:trigger không hợp lệ và không thể xác thực lại

Oracle sẽ cố gắng biên dịch lại các đối tượng không hợp lệ khi chúng được tham chiếu. Ở đây trình kích hoạt không hợp lệ và mỗi khi bạn cố gắng chèn một hàng, nó sẽ cố gắng biên dịch lại trình kích hoạt và không thành công, dẫn đến lỗi ORA-04098.

Bạn có thể select * from user_errors where type = 'TRIGGER' and name = 'NEWALERT' để xem (các) lỗi nào mà trình kích hoạt thực sự mắc phải và tại sao nó không biên dịch. Trong trường hợp này, có vẻ như bạn đang thiếu dấu chấm phẩy ở cuối insert dòng:

INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')

Vì vậy, hãy làm cho nó:

CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
  BEGIN
        INSERT INTO Users (userID, firstName, lastName, password)
        VALUES ('how', 'im', 'testing', 'this trigger');
  END;           
/

Nếu bạn nhận được cảnh báo biên dịch khi làm điều đó, bạn có thể show errors nếu bạn đang sử dụng SQL * Plus hoặc SQL Developer hoặc truy vấn user_errors một lần nữa.

Tất nhiên, điều này giả định Users của bạn bảng có các tên cột đó và tất cả chúng đều là varchar2 ... nhưng có lẽ bạn sẽ thực sự làm điều gì đó thú vị hơn với trình kích hoạt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xoay / xoay bảng với tổng hợp trong Oracle

  2. THÊM trên SearchOracle.com

  3. cách đặt cột tăng tự động với nhà phát triển sql

  4. GI 12.2 Thay đổi

  5. Đảo ngược chuỗi Word bằng Word sử dụng SQL