2013-12-01 3 views
0

У меня есть этот триггер, и я получаю сообщение об аферере, когда я его запускаю; msgstr "неверная переменная связывания". Кажется, я не вижу, где проблема. Любая помощь будет оценена по достоинству.Таблица UPDATE с триггером PL/SQL?

create or replace TRIGGER trg_placed AFTER UPDATE 
OF STATUS_ID ON STATUS 
FOR EACH ROW 
BEGIN 
    IF :new.STATUS_ID = 7 
    THEN 
    UPDATE STUDENT 
     SET PLACED_Y_N = 'Y' 
     WHERE RECORD_NUMBER = :NEW.record_number; 
    END IF; 
END; 
+0

Показать полное сообщение 'плохой переменной связывания ....' –

+0

ошибки (7,17): PLS-00049: плохой бин d variable 'NEW.NAME' – Luke14

+0

Это не точное сообщение, которое у вас есть. –

ответ

0

попробовать так:

create or replace TRIGGER trg_placed AFTER UPDATE 

OF STATUS_ID ON STATUS 

REFERENCING OLD AS o NEW AS n 

FOR EACH ROW 

BEGIN 

    IF n.STATUS_ID = 7 

    THEN 

     UPDATE STUDENT 

     SET PLACED_Y_N = 'Y' 

     WHERE RECORD_NUMBER = n.record_number; 

    END IF; 

END; 
0

При использовании нижнего регистра для объектов Oracle, вы должны окружить имена объектов в кавычки (") и соответствует случай точно, чтобы заставить его работать. .

как этот

create or replace TRIGGER trg_placed AFTER UPDATE 
OF STATUS_ID ON STATUS 
FOR EACH ROW 
BEGIN 
IF :new.STATUS_ID = 7 
THEN 
UPDATE STUDENT 
    SET PLACED_Y_N = 'Y' 
    WHERE RECORD_NUMBER = :NEW."record_number"; --quotes (") required for column name. 
END IF; 
END; 
Смежные вопросы