2017-02-11 13 views
0

Является ли это синтаксической ошибкой, мне не хватает пробела или ':' в моем коде. Ниже приведен код для создания триггераОшибка сборки компиляции sqlplus

SQL> Create or replace trigger trig_addr_mulund 
     2 After insert or update 
     3 On users_table 
     4 For each row 
     5 begin 
     6 If :new.address like 'Mulund' then 
     7 Insert into [email protected] values (:new.id,:new.role_id,:new.b 
    ranch_id,:new.name,:new.email,:new.phone,:new.address, 
     8 :new.email,:new.phone,:new.address); 
     9 Else 
    10 Insert into [email protected] values (:new.id,:new.role_id,:n 
    ew.branch_id,:new.name,:new.email,:new.phone,:new.address, 
    11 :new.email,:new.phone,:new.address); 
    12 End if 
    13 End; 
    14/

Warning: Trigger created with compilation errors. 
+0

Использовать 'show errors' после просмотра этого предупреждения или запросить представление' user_errors', чтобы увидеть фактическую ошибку компиляции. –

ответ

1

Вы пропускаете точку с запятой в вашей линии 12 вблизи END IF

Поскольку вы делаете прямое сравнение, использовать = вместо LIKE. Кроме того, рекомендуется указывать имена столбцов явно в ваших операторах SQL.

CREATE OR REPLACE TRIGGER trig_addr_mulund AFTER 
    INSERT OR 
    UPDATE ON users_table FOR EACH row 
BEGIN 
    IF :new.address = 'Mulund' THEN -- changed "LIKE" to "=" 
    INSERT 
    INTO [email protected] VALUES 
    (
     :new.id, 
     :new.role_id, 
     :new.branch_id, 
     :new.name, 
     :new.email, 
     :new.phone, 
     :new.address, 
     :new.email, 
     :new.phone, 
     :new.address 
    ); 
ELSE 
    INSERT 
    INTO [email protected] VALUES 
    (
     :new.id, 
     :new.role_id, 
     :new.branch_id, 
     :new.name, 
     :new.email, 
     :new.phone, 
     :new.address, 
     :new.email, 
     :new.phone, 
     :new.address 
    ); 
END IF; -- added the missing semicolon 
END; 
/