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

ORA-04076:đặc tả MỚI hoặc CŨ không hợp lệ - PL / SQL - Oracle Trigger

Bạn phải sử dụng :NEW:OLD mỗi khi bạn tham khảo các cột được chèn.

CREATE OR REPLACE TRIGGER ManageCall
    AFTER INSERT 
    ON STATE_CHANGE
    FOR EACH ROW
    DECLARE
    x_coord NUMBER;
    y_coord NUMBER;
    BEGIN
    IF :NEW.ChangeType='C' THEN
        SELECT X, Y INTO x_coord, y_coord
        FROM TELEPHONE t
        WHERE t.PHONENO = :NEW.PHONENO;
    END IF;
    END;

Khi bạn đang sử dụng WHEN -vì bạn không thể sử dụng MỚI làm biến liên kết như đã nêu tại đây (tìm kiếm 'mệnh đề WHEN'):

Vì vậy, những điều sau đây cũng sẽ hoạt động:

CREATE OR REPLACE TRIGGER ManageCall
    AFTER INSERT 
    ON STATE_CHANGE
    FOR EACH ROW
    WHEN (NEW.ChangeType='C')
    DECLARE
    x_coord NUMBER;
    y_coord NUMBER;
    BEGIN
        SELECT X, Y INTO x_coord, y_coord
        FROM TELEPHONE
        WHERE PHONENO = :NEW.PHONENO;
    END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi giá trị cổng configApplicationServer thuộc tính Worklight

  2. Đánh dấu cú pháp trong trình duyệt Oracle giống như SQL Server Management Studio

  3. Mảng PL / SQL tới CLOB

  4. SQL tiêu chuẩn thay thế cho Oracle DECODE

  5. Làm thế nào để thực thi một thủ tục được lưu trữ trong một phiên khác trong cùng một thời điểm trong pl / sql