Oracle 11g XE ignores my statment after putting value form variable in trigger -
i want specification doctor , department tables make sure manager of department same specification of while inserting ..
create or replace trigger check_dept_man after insert on department each row declare spec varchar2(30); dept_name varchar2(30); begin dept_name := :new.dept_name; select dr_specialisation spec doctor dr_id= :new.manager_id; if ( dept_name != spec ) raise_application_error(-20353,"error man"); end if; end; this error get:
this department table:
create table "department" ( "dept_id" number(3,0), "dept_name" varchar2(30), "manager_id" number(3,0), "manage_date" date, "location" varchar2(6), "number_of_doctors" number(3,0), "number_of_nurses" number(3,0), constraint "dept_id_pk" primary key ("dept_id") enable, constraint "dept_name_uq" unique ("dept_name") enable ) ; and doctor :
create table "doctor" ( "dr_id" number(5,0), "dr_name" "full_name" , "dr_gender" varchar2(6), "dr_specialisation" varchar2(30), "dr_location" "location_ty" , "dept_no" number(3,0), "total_surgery_time" number(4,0), constraint "dr_gender_is" check (dr_gender in ('male','female')) enable, constraint "dr_id_pk" primary key ("dr_id") enable ) ; alter table "doctor" add constraint "dr_dept_fk" foreign key ("dept_no") references "department" ("dept_id") the whole thing ' , .. spent day silly mistake .. @kordirko , guys
thanks @kordirko observation, should work:
create or replace trigger check_dept_man before insert on department each row declare spec varchar2(30); dept_name varchar2(30); begin dept_name := :new.dept_name; select dr_specialisation spec doctor dr_id= :new.manager_id; if dept_name != spec raise_application_error(-20353, 'error man'); end if; end; / 
Comments
Post a Comment