2016-12-15 527 views
-3

oracle apexにトリガーを作成しようとしています。これは、UniversityRefNo列にあるすべてのデータを選択し、ユーザーが既存の値を入れることを許可しません。しかし、私はこのエラーが発生し続ける:"ORA-24344: success with compilation error."もし誰かが間違っていることを教えてくれればそれは素晴らしいだろう。ORA-24344:コンパイル・エラーで成功しました。トリガー・アペックス

CREATE TABLE VOLUNTEER(
Volunteer_id   NUMBER(5) PRIMARY KEY,  
Title    VARCHAR2(5),  
VolName    VARCHAR2(30), 
UniversityRefNo  VARCHAR2(10),  
Address_Line_1  VARCHAR2(30), 
Address_Line_2  VARCHAR2(12),  
PostCode    VARCHAR2(12),  
Mobile_Number  NUMBER(12),  
Home_Number   NUMBER(12),  
Email    VARCHAR2(25),  
Ethnic_Group   VARCHAR2(10),  
VolunteerType  VARCHAR2(10), 
Register_Disable  VARCHAR2(3), 
Gender    VARCHAR2(1), 
Medical_Details  VARCHAR2(20), 
PassPortNumber  NUMBER(10), 
Nationality   VARCHAR2(10), 
Passport_Expiry_Date DATE,  
Date_of_Birth  DATE, 
Course_Name   VARCHAR2(20), 
Course_Year   VARCHAR2(10), 
Area_of_work   VARCHAR2(15),  
StaffManagerName  VARCHAR2(20),  
StaffManagerEmail VARCHAR2(20),  
StaffManagerPhone VARCHAR2(12)); 

CREATE or replace trigger unirefnoTrigger  
before insert or update of UniversityRefNo ON VOLUNTEER for each row  
begin  
SELECT UniversityRefNo from VOLUNTEER  
if(UniversityRefno = :new.UniversityRefNo) then raise application error(UniversityRefNO || :new.UniversityRefNo || 'already exists'); 
end if;  
end; 

答えて

0

あなたが列UniversityRefNoユニークようにしたい場合は、あなたが簡単な、このようにUNIQUE制約を作成することができますトリガする必要はありません。ただ、以下の目的を学ぶため

ALTER TABLE VOLUNTEER 
ADD CONSTRAINT UniversityRefNo_UK UNIQUE (UniversityRefNo); 

はどのようにしています同じことをするトリガーを作成することができますが、私はそれを使用することをお勧めしません。

CREATE or replace trigger unirefnoTrigger 
before insert or update of UniversityRefNo ON VOLUNTEER for each row 
university_count number; 
begin 
SELECT count(*) into university_count from VOLUNTEER where UniversityRefno=:new.UniversityRefNo; 
if university_count<>0 then 
raise application error(-20000, :new.UniversityRefNo || ' already exists'); 
end if; 
end; 
+0

私はOPの意図は、 "ORA-00001:一意制約(constraint_name)違反"よりも説明的なエラーメッセージを与えることだと思いますが、これを行うより良い方法があります。 – Typo

関連する問題