2016-07-15 10 views
1

次のコードは、私のproject on sqlで構成されています。トリガーのコンパイルエラーを繰り返し見つけるのは苦労しています。 https://github.com/Shauqi/PhotoGalleryDatabase:私はこのコードセグメントSQL.Ifオラクルを使用していpl/sqlでトリガを作成する際にコンパイルエラーが発生しました

Warning: Trigger created with compilation errors. 

は、次のリンクで、プロジェクト全体を見つけることができます十分ではありません。

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 Sir、次のエラーメッセージは私が得るだけです: 警告:トリガはコンパイルエラーで作成されました。 – 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

関連する問題