Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-04076:spesifikasi BARU atau LAMA tidak valid - PL/SQL - Pemicu Oracle

Anda harus menggunakan :NEW dan :OLD setiap kali Anda merujuk ke kolom yang disisipkan.

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;

Saat Anda menggunakan WHEN -klausa, Anda tidak dapat menggunakan BARU sebagai variabel pengikat seperti yang dinyatakan di sini (cari 'klausa WHEN'):

Jadi yang berikut ini juga berfungsi:

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. Instal Driver Attunity Oracle di Visual Studio 2017

  2. Menghasilkan Skema SQL dari XML

  3. Bagaimana cara memilih catatan dengan nilai maksimum dalam dua kolom?

  4. Tidak ada modul oci8 di phpinfo()

  5. Kembalikan Nama Bulan Pendek dari Tanggal di Oracle