2016-07-15 71 views
1

以下代码由我在sql上的项目组成。我很难再次找到触发器编译错误。在pl/sql中创建触发器时出现编译错误

Warning: Trigger created with compilation errors. 

我使用Oracle SQL.If该代码段还不够,那么你可以在以下链接整个项目: https://github.com/Shauqi/PhotoGalleryDatabase

create table user1 
    (
    user_id number(10) not null, 
    name varchar(20), 
    password number(12) 
    ); 
create table myaudit 
    (
    new_name varchar2(30), 
    old_name varchar2(30), 
    user_name varchar2(30), 
    entry_date varchar2(30), 
    operation varchar2(30) 
    ); 
set serveroutput on 
CREATE OR REPLACE TRIGGER user1audit 
BEFORE INSERT OR DELETE OR UPDATE ON user1 
FOR EACH ROW 
DECLARE 
v_user  varchar2 (30); v_date  varchar2(30); 
BEGIN 
    SELECT user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') INTO v_user, v_date FROM dual; 
    IF INSERTING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(:NEW.NAME, Null , v_user, v_date, 'Insert'); 
    ELSIF DELETING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(NULL,:OLD.NAME, v_user, v_date, 'Delete'); 
    ELSIF UPDATING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(:NEW.NAME, :OLD.NAME, v_user, v_date,'Update'); 
    END IF; 
END; 
/
+0

您可以显示完整的错误信息? –

+0

@TimBiegeleisen先生,只有我得到以下错误消息: 警告:使用编译错误创建触发器。 – Shauqi

回答

1

试试这个:

CREATE OR REPLACE TRIGGER user1audit 
BEFORE INSERT OR DELETE OR UPDATE ON user1 
FOR EACH ROW 

BEGIN 

    IF INSERTING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(:NEW.NAME, Null , user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS'), 'Insert'); 
    ELSIF DELETING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(NULL,:OLD.NAME, user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') , 'Delete'); 
    ELSIF UPDATING THEN 
    INSERT INTO myaudit (new_name,old_name, user_name, entry_date, operation) VALUES(:NEW.NAME, :OLD.NAME, user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS'),'Update'); 
    END IF; 
END; 
/
+0

非常感谢。 – Shauqi

+0

欢迎您。尽量让事情尽可能简单,以避免混淆。:-) – XING

+0

是的,先生。我会尽力的。:)。 – Shauqi